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:
@ -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 => {
|
||||||
|
if (Object.keys(files).length === 1) {
|
||||||
|
return { nameToFileKey: { Editor: getFirstFileKey(files) }};
|
||||||
|
}
|
||||||
|
return {
|
||||||
nameToFileKey: _.reduce(files, (map, file) => {
|
nameToFileKey: _.reduce(files, (map, file) => {
|
||||||
map[file.name] = file.key;
|
map[file.name] = file.key;
|
||||||
return map;
|
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;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user