Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions plugins/shared/titles.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,14 @@ export const getMemberPrefix = model => {
return prefix ? `${prefix}: ` : '';
};

export const getMemberTitle = (model, options) => {
export const getMemberTitle = (model, options, specificSignature = null) => {
const prefix = getMemberPrefix(model);
const params = model.parameters ?? callableSignatures(model)[0]?.parameters;
const name = escapeCode(memberName(model, options));

const params =
specificSignature?.parameters ??
model.parameters ??
callableSignatures(model)[0]?.parameters;
if (params) {
return `${prefix}\`${escapeCode(signatureExpression(model, params, name))}\``;
}
Expand Down
67 changes: 66 additions & 1 deletion plugins/theme/partials/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,37 @@ export default ctx => {
.join('\n');
},

signatures(model, options) {
const md = [];
const multipleSignatures =
model.signatures && model.signatures?.length > 1;

model.signatures?.forEach(signature => {
if (multipleSignatures) {
md.push(
heading(
options.headingLevel,
getMemberTitle(
model,
{ local: isTypePage(ctx.page.model) },
signature
)
)
);
}
md.push(
ctx.partials.signature(signature, {
headingLevel: multipleSignatures
? options.headingLevel + 1
: options.headingLevel,
nested: options.nested,
multipleSignatures: false,
})
Comment thread
moshams272 marked this conversation as resolved.
);
});
return md.join('\n\n');
},

declaration(model, options) {
const opts = { headingLevel: 2, nested: false, ...options };
const signatures = callableSignatures(model);
Expand Down Expand Up @@ -181,6 +212,31 @@ export default ctx => {
});
},

memberContainer(model, options) {
const md = [];

const isOverloadedMethod =
model.signatures &&
model.signatures.length > 1 &&
[ReflectionKind.Function, ReflectionKind.Method].includes(model.kind);

if (
!isOverloadedMethod &&
!ctx.router.hasOwnDocument(model) &&
model.kind !== ReflectionKind.Constructor
) {
md.push(heading(options.headingLevel, ctx.partials.memberTitle(model)));
}

md.push(
ctx.partials.member(model, {
headingLevel: options.headingLevel,
nested: options.nested,
})
);
return md.join('\n\n');
},

memberWithGroups(model, options) {
const md = [];
const stability = ctx.helpers.stabilityBlockquote(model.comment);
Expand Down Expand Up @@ -260,7 +316,16 @@ export default ctx => {
const multipleSignatures = model.signatures.length > 1;
model.signatures.forEach(signature => {
if (multipleSignatures) {
md.push(heading(options.headingLevel, i18n.kind_call_signature()));
md.push(
heading(
options.headingLevel,
getMemberTitle(
model,
{ local: isTypePage(ctx.page.model) },
signature
)
)
);
}
md.push(
ctx.partials.signature(signature, {
Expand Down
6 changes: 2 additions & 4 deletions tests/theme/theme.test.mjs.snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -119,22 +119,20 @@ Class demonstrating overload signatures.

### \`overloadMethod(name, count)\`

#### Call Signature

* \`name\` {string} A simple string parameter
* \`count\` {number} A simple number parameter
* Returns: {void}

First overload signature.

#### Call Signature
### \`overloadMethod(isEnabled)\`

* \`isEnabled\` {boolean} A simple boolean parameter
* Returns: {string}

Second overload signature.

#### Call Signature
### \`overloadMethod(id, isEnabled)\`

* \`id\` {number} A simple string parameter
* \`isEnabled\` {boolean} A simple boolean parameter
Expand Down