11import { Dialog , showDialog , showErrorMessage } from '@jupyterlab/apputils' ;
2+ import { ISettingRegistry } from '@jupyterlab/coreutils' ;
23import { IRenderMimeRegistry } from '@jupyterlab/rendermime' ;
34import { JSONObject } from '@phosphor/coreutils' ;
45import { Menu } from '@phosphor/widgets' ;
@@ -15,7 +16,7 @@ import { openListedFile } from '../utils';
1516import { GitAuthorForm } from '../widgets/AuthorBox' ;
1617import { CommitBox } from './CommitBox' ;
1718import { openDiffView } from './diff/DiffWidget' ;
18- import { GitStage } from './GitStage' ;
19+ import { GitStage , IGitStageProps } from './GitStage' ;
1920
2021export namespace CommandIDs {
2122 export const gitFileOpen = 'gf:Open' ;
@@ -56,6 +57,7 @@ export interface IFileListProps {
5657 untrackedFiles : Git . IStatusFileResult [ ] ;
5758 model : GitExtension ;
5859 renderMime : IRenderMimeRegistry ;
60+ settings : ISettingRegistry . ISettings ;
5961}
6062
6163export class FileList extends React . Component < IFileListProps , IFileListState > {
@@ -390,93 +392,117 @@ export class FileList extends React.Component<IFileListProps, IFileListState> {
390392 } ;
391393
392394 render ( ) {
395+ const sharedProps = {
396+ model : this . props . model ,
397+ selectedFile : this . state . selectedFile ,
398+ updateSelectedFile : this . updateSelectedFile ,
399+ selectedStage : this . state . selectedStage ,
400+ updateSelectedStage : this . updateSelectedStage ,
401+ selectedDiscardFile : this . state . selectedDiscardFile ,
402+ updateSelectedDiscardFile : this . updateSelectedDiscardFile ,
403+ disableFiles : this . state . disableFiles ,
404+ toggleDisableFiles : this . toggleDisableFiles ,
405+ renderMime : this . props . renderMime
406+ } ;
407+
408+ const Staged = ( props : Partial < IGitStageProps > = { } ) => (
409+ < GitStage
410+ heading = { 'Staged' }
411+ files = { this . props . stagedFiles }
412+ showFiles = { this . state . showStaged }
413+ displayFiles = { this . displayStaged }
414+ moveAllFiles = { this . resetAllStagedFiles }
415+ discardAllFiles = { null }
416+ discardFile = { null }
417+ moveFile = { this . resetStagedFile }
418+ moveFileIconClass = { moveFileDownButtonStyle }
419+ moveFileIconSelectedClass = { moveFileDownButtonSelectedStyle }
420+ moveAllFilesTitle = { 'Unstage all changes' }
421+ moveFileTitle = { 'Unstage this change' }
422+ contextMenu = { this . contextMenuStaged }
423+ disableOthers = { null }
424+ isDisabled = { this . state . disableStaged }
425+ { ...sharedProps }
426+ { ...props }
427+ />
428+ ) ;
429+
430+ const Changed = ( props : Partial < IGitStageProps > = { } ) => (
431+ < GitStage
432+ heading = { 'Changed' }
433+ files = { this . props . unstagedFiles }
434+ showFiles = { this . state . showUnstaged }
435+ displayFiles = { this . displayUnstaged }
436+ moveAllFiles = { this . addAllUnstagedFiles }
437+ discardAllFiles = { this . discardAllUnstagedFiles }
438+ discardFile = { this . discardUnstagedFile }
439+ moveFile = { this . addUnstagedFile }
440+ moveFileIconClass = { moveFileUpButtonStyle }
441+ moveFileIconSelectedClass = { moveFileUpButtonSelectedStyle }
442+ moveAllFilesTitle = { 'Stage all changes' }
443+ moveFileTitle = { 'Stage this change' }
444+ contextMenu = { this . contextMenuUnstaged }
445+ disableOthers = { this . disableStagesForDiscardAll }
446+ isDisabled = { this . state . disableUnstaged }
447+ { ...sharedProps }
448+ { ...props }
449+ />
450+ ) ;
451+
452+ const Untracked = ( props : Partial < IGitStageProps > = { } ) => (
453+ < GitStage
454+ heading = { 'Untracked' }
455+ files = { this . props . untrackedFiles }
456+ showFiles = { this . state . showUntracked }
457+ displayFiles = { this . displayUntracked }
458+ moveAllFiles = { this . addAllUntrackedFiles }
459+ discardAllFiles = { null }
460+ discardFile = { null }
461+ moveFile = { this . addUntrackedFile }
462+ moveFileIconClass = { moveFileUpButtonStyle }
463+ moveFileIconSelectedClass = { moveFileUpButtonSelectedStyle }
464+ moveAllFilesTitle = { 'Track all untracked files' }
465+ moveFileTitle = { 'Track this file' }
466+ contextMenu = { this . contextMenuUntracked }
467+ disableOthers = { null }
468+ isDisabled = { this . state . disableUntracked }
469+ { ...sharedProps }
470+ { ...props }
471+ />
472+ ) ;
473+
474+ const allFilesExcludingUnmodified = ( ) =>
475+ this . props . untrackedFiles . concat (
476+ this . props . unstagedFiles ,
477+ this . props . stagedFiles
478+ ) ;
479+
393480 return (
394481 < div onContextMenu = { event => event . preventDefault ( ) } >
395482 < CommitBox
396- hasStagedFiles = { this . props . stagedFiles . length > 0 }
397- commitAllStagedFiles = { this . commitAllStagedFiles }
398- />
399- < GitStage
400- heading = { 'Staged' }
401- files = { this . props . stagedFiles }
402- model = { this . props . model }
403- showFiles = { this . state . showStaged }
404- displayFiles = { this . displayStaged }
405- moveAllFiles = { this . resetAllStagedFiles }
406- discardAllFiles = { null }
407- discardFile = { null }
408- moveFile = { this . resetStagedFile }
409- moveFileIconClass = { moveFileDownButtonStyle }
410- moveFileIconSelectedClass = { moveFileDownButtonSelectedStyle }
411- moveAllFilesTitle = { 'Unstage all changes' }
412- moveFileTitle = { 'Unstage this change' }
413- contextMenu = { this . contextMenuStaged }
414- selectedFile = { this . state . selectedFile }
415- updateSelectedFile = { this . updateSelectedFile }
416- selectedStage = { this . state . selectedStage }
417- updateSelectedStage = { this . updateSelectedStage }
418- selectedDiscardFile = { this . state . selectedDiscardFile }
419- updateSelectedDiscardFile = { this . updateSelectedDiscardFile }
420- disableFiles = { this . state . disableFiles }
421- toggleDisableFiles = { this . toggleDisableFiles }
422- disableOthers = { null }
423- isDisabled = { this . state . disableStaged }
424- renderMime = { this . props . renderMime }
425- />
426- < GitStage
427- heading = { 'Changed' }
428- files = { this . props . unstagedFiles }
429- model = { this . props . model }
430- showFiles = { this . state . showUnstaged }
431- displayFiles = { this . displayUnstaged }
432- moveAllFiles = { this . addAllUnstagedFiles }
433- discardAllFiles = { this . discardAllUnstagedFiles }
434- discardFile = { this . discardUnstagedFile }
435- moveFile = { this . addUnstagedFile }
436- moveFileIconClass = { moveFileUpButtonStyle }
437- moveFileIconSelectedClass = { moveFileUpButtonSelectedStyle }
438- moveAllFilesTitle = { 'Stage all changes' }
439- moveFileTitle = { 'Stage this change' }
440- contextMenu = { this . contextMenuUnstaged }
441- selectedFile = { this . state . selectedFile }
442- updateSelectedFile = { this . updateSelectedFile }
443- selectedStage = { this . state . selectedStage }
444- updateSelectedStage = { this . updateSelectedStage }
445- selectedDiscardFile = { this . state . selectedDiscardFile }
446- updateSelectedDiscardFile = { this . updateSelectedDiscardFile }
447- disableFiles = { this . state . disableFiles }
448- toggleDisableFiles = { this . toggleDisableFiles }
449- disableOthers = { this . disableStagesForDiscardAll }
450- isDisabled = { this . state . disableUnstaged }
451- renderMime = { this . props . renderMime }
452- />
453- < GitStage
454- heading = { 'Untracked' }
455- files = { this . props . untrackedFiles }
456- model = { this . props . model }
457- showFiles = { this . state . showUntracked }
458- displayFiles = { this . displayUntracked }
459- moveAllFiles = { this . addAllUntrackedFiles }
460- discardAllFiles = { null }
461- discardFile = { null }
462- moveFile = { this . addUntrackedFile }
463- moveFileIconClass = { moveFileUpButtonStyle }
464- moveFileIconSelectedClass = { moveFileUpButtonSelectedStyle }
465- moveAllFilesTitle = { 'Track all untracked files' }
466- moveFileTitle = { 'Track this file' }
467- contextMenu = { this . contextMenuUntracked }
468- selectedFile = { this . state . selectedFile }
469- updateSelectedFile = { this . updateSelectedFile }
470- selectedStage = { this . state . selectedStage }
471- updateSelectedStage = { this . updateSelectedStage }
472- selectedDiscardFile = { this . state . selectedDiscardFile }
473- updateSelectedDiscardFile = { this . updateSelectedDiscardFile }
474- disableFiles = { this . state . disableFiles }
475- toggleDisableFiles = { this . toggleDisableFiles }
476- disableOthers = { null }
477- isDisabled = { this . state . disableUntracked }
478- renderMime = { this . props . renderMime }
483+ hasFiles = { this . props . stagedFiles . length > 0 }
484+ commitFunc = { this . commitAllStagedFiles }
479485 />
486+ { this . props . settings . composite [ 'simpleStaging' ] ? (
487+ < div >
488+ < Changed
489+ files = { allFilesExcludingUnmodified ( ) }
490+ discardAllFiles = { null }
491+ discardFile = { null }
492+ moveFile = { null }
493+ moveFileIconClass = { null }
494+ moveFileIconSelectedClass = { null }
495+ moveAllFilesTitle = { null }
496+ moveFileTitle = { null }
497+ />
498+ </ div >
499+ ) : (
500+ < div >
501+ < Staged />
502+ < Changed />
503+ < Untracked />
504+ </ div >
505+ ) }
480506 </ div >
481507 ) ;
482508 }
0 commit comments