feat(aio): first pass API docs redesign (#21874)
Includes: * display ToC for API docs * update dgeni-packages to 0.24.1 * add floating sidebar in API docs * add breadcrumbs and structured data for Google crawler * improved rendering of method overloads * properties rendered in a table * params rendered with docs * removal of outdated "infobox" from all API docs PR Close #21874
This commit is contained in:

committed by
Miško Hevery

parent
bc1e22922a
commit
7007f51c35
59
aio/tools/transforms/angular-api-package/processors/processClassLikeMembers.js
vendored
Normal file
59
aio/tools/transforms/angular-api-package/processors/processClassLikeMembers.js
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
/**
|
||||
* A class like API doc contains members, but these can be either properties or method.
|
||||
* Separate the members into two new collections: `doc.properties` and `doc.methods`.
|
||||
*/
|
||||
module.exports = function processClassLikeMembers() {
|
||||
return {
|
||||
$runAfter: ['filterContainedDocs'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process(docs) {
|
||||
docs.forEach(doc => {
|
||||
if (doc.members) {
|
||||
doc.properties = [];
|
||||
doc.methods = [];
|
||||
doc.members.forEach(member => {
|
||||
if (isMethod(member)) {
|
||||
doc.methods.push(member);
|
||||
computeMemberDescription(member);
|
||||
} else {
|
||||
doc.properties.push(member);
|
||||
|
||||
if (!member.description) {
|
||||
// Is this property defined as a constructor parameter e.g. `constructor(public property: string) { ... }`?
|
||||
const constructorDoc = member.containerDoc.constructorDoc;
|
||||
if (constructorDoc) {
|
||||
const matchingParameterDoc = constructorDoc.parameterDocs.filter(doc => doc.declaration === member.declaration)[0];
|
||||
member.constructorParamDoc = matchingParameterDoc;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (doc.statics) {
|
||||
doc.staticProperties = [];
|
||||
doc.staticMethods = [];
|
||||
doc.statics.forEach(member => {
|
||||
if (isMethod(member)) {
|
||||
doc.staticMethods.push(member);
|
||||
computeMemberDescription(member);
|
||||
} else {
|
||||
doc.staticProperties.push(member);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
function isMethod(doc) {
|
||||
return doc.hasOwnProperty('parameters') && !doc.isGetAccessor && !doc.isSetAccessor;
|
||||
}
|
||||
|
||||
function computeMemberDescription(member) {
|
||||
if (!member.description && member.overloads) {
|
||||
// Perhaps the description is on one of the overloads - take the first non-empty one
|
||||
member.description = member.overloads.map(overload => overload.description).filter(description => !!description)[0];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user