Use same Link UI component for react-scroll links

This commit is contained in:
Fabio Berger
2018-10-03 16:37:59 +01:00
parent ab855cdd1c
commit 437612f8b8
28 changed files with 212 additions and 136 deletions

View File

@@ -1,5 +1,5 @@
import { MenuSubsectionsBySection } from '@0xproject/react-shared';
import { DocAgnosticFormat, TypeDefinitionByName } from '@0xproject/types';
import { ALink, LinkType, MenuSubsectionsBySection, utils as sharedUtils } from '@0xproject/react-shared';
import { DocAgnosticFormat, ObjectMap, TypeDefinitionByName } from '@0xproject/types';
import * as _ from 'lodash';
import {
@@ -32,10 +32,10 @@ export class DocsInfo {
this.sectionNameToMarkdownByVersion = config.sectionNameToMarkdownByVersion;
this.contractsByVersionByNetworkId = config.contractsByVersionByNetworkId;
}
public getMenuSubsectionsBySection(docAgnosticFormat?: DocAgnosticFormat): MenuSubsectionsBySection {
const menuSubsectionsBySection = {} as MenuSubsectionsBySection;
public getSubsectionNameToLinks(docAgnosticFormat?: DocAgnosticFormat): ObjectMap<ALink[]> {
const subsectionNameToLinks: ObjectMap<ALink[]> = {};
if (_.isUndefined(docAgnosticFormat)) {
return menuSubsectionsBySection;
return subsectionNameToLinks;
}
const docSections = _.keys(this.sections);
@@ -56,7 +56,14 @@ export class DocsInfo {
if (!_.isUndefined(this.sections.types) && sectionName === this.sections.types) {
const sortedTypesNames = _.sortBy(docSection.types, 'name');
const typeNames = _.map(sortedTypesNames, t => t.name);
menuSubsectionsBySection[sectionName] = typeNames;
const typeLinks = _.map(typeNames, typeName => {
return {
to: `${sectionName}-${typeName}`,
title: typeName,
type: LinkType.ReactScroll,
};
});
subsectionNameToLinks[sectionName] = typeLinks;
} else if (isExportedFunctionSection) {
// Noop so that we don't have the method listed underneath itself.
} else {
@@ -71,15 +78,20 @@ export class DocsInfo {
const methodNames = _.map(methodsSortedByName, m => m.name);
const sortedFunctionNames = _.sortBy(docSection.functions, 'name');
const functionNames = _.map(sortedFunctionNames, m => m.name);
menuSubsectionsBySection[sectionName] = [
...eventNames,
...propertyNames,
...functionNames,
...methodNames,
];
const names = [...eventNames, ...propertyNames, ...functionNames, ...methodNames];
const links = _.map(names, name => {
return {
to: `${sectionName}-${name}`,
title: name,
type: LinkType.ReactScroll,
};
});
subsectionNameToLinks[sectionName] = links;
}
});
return menuSubsectionsBySection;
return subsectionNameToLinks;
}
public getTypeDefinitionsByName(docAgnosticFormat: DocAgnosticFormat): { [name: string]: TypeDefinitionByName } {
if (_.isUndefined(this.sections.types)) {
@@ -90,4 +102,20 @@ export class DocsInfo {
const typeDefinitionByName = _.keyBy(typeDocSection.types, 'name') as any;
return typeDefinitionByName;
}
public getSectionNameToLinks(): ObjectMap<ALink[]> {
const sectionNameToLinks: ObjectMap<ALink[]> = {};
_.each(this.menu, (linkTitles, sectionName) => {
sectionNameToLinks[sectionName] = [];
_.each(linkTitles, linkTitle => {
const to = sharedUtils.getIdFromName(linkTitle);
const links = sectionNameToLinks[sectionName];
links.push({
title: linkTitle,
to,
type: LinkType.ReactScroll,
});
});
});
return sectionNameToLinks;
}
}