Merge pull request #16570 from werne2j/fix/modern-challenge-editor-name

fix(modern-challenges): Default nav link to "Editor" if only one editor
This commit is contained in:
Berkeley Martinez
2018-01-29 19:19:43 -08:00
committed by GitHub

View File

@ -18,18 +18,25 @@ import { filesSelector } from '../../../../files';
const createModernEditorToggleType = fileKey => const createModernEditorToggleType = fileKey =>
types.toggleModernEditor + `(${fileKey})`; types.toggleModernEditor + `(${fileKey})`;
const getFirstFileKey = _.flow(_.values, _.first, _.property('key'));
const propTypes = { const propTypes = {
nameToFileKey: PropTypes.object nameToFileKey: PropTypes.object
}; };
const mapStateToProps = createSelector( const mapStateToProps = createSelector(
filesSelector, filesSelector,
files => ({ files => {
nameToFileKey: _.reduce(files, (map, file) => { if (Object.keys(files).length === 1) {
map[file.name] = file.key; return { nameToFileKey: { Editor: getFirstFileKey(files) }};
return map; }
}, {}) return {
}) nameToFileKey: _.reduce(files, (map, file) => {
map[file.name] = file.key;
return map;
}, {})
};
}
); );
const mapDispatchToProps = null; const mapDispatchToProps = null;
@ -39,23 +46,32 @@ export const mapStateToPanes = addNS(
createSelector( createSelector(
filesSelector, filesSelector,
showPreviewSelector, showPreviewSelector,
(files, showPreview)=> { (files, showPreview) => {
// create panes map here // create panes map here
// must include map // must include map
// side panel // side panel
// editors are created based on state // editors are created based on state
// so pane component can have multiple panes based on state // so pane component can have multiple panes based on state
const panesMap = _.reduce(files, (map, file) => {
map[createModernEditorToggleType(file.fileKey)] = file.name; const panesMap = {
return map;
}, {
[types.toggleMap]: 'Map', [types.toggleMap]: 'Map',
[types.toggleSidePanel]: 'Lesson' [types.toggleSidePanel]: 'Lesson'
}); };
// If there is more than one file show file name
if (Object.keys(files).length > 1) {
_.forEach(files, (file) => {
panesMap[createModernEditorToggleType(file.fileKey)] = file.name;
});
} else {
const key = getFirstFileKey(files);
panesMap[createModernEditorToggleType(key)] = 'Editor';
}
if (showPreview) { if (showPreview) {
panesMap[types.togglePreview] = 'Preview'; panesMap[types.togglePreview] = 'Preview';
} }
return panesMap; return panesMap;
} }
) )