From 4e26b450e092e19d8a03bda2b758c6392e822823 Mon Sep 17 00:00:00 2001 From: Mohamed Shams El-Deen Date: Thu, 16 Jul 2026 00:49:15 +0300 Subject: [PATCH 1/2] fix(theme): replace 'Call Signature' with the real signature in functions overload --- plugins/shared/titles.mjs | 18 +++++++-- plugins/theme/partials/index.mjs | 65 ++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/plugins/shared/titles.mjs b/plugins/shared/titles.mjs index e8920d4a..3b1ac33e 100644 --- a/plugins/shared/titles.mjs +++ b/plugins/shared/titles.mjs @@ -107,13 +107,23 @@ export const getMemberPrefix = model => { return prefix ? `${prefix}: ` : ''; }; -export const getMemberTitle = (model, options) => { +export const getMemberTitle = ( + model, + options, + specificSignature = null, + omitParams = false +) => { const prefix = getMemberPrefix(model); - const params = model.parameters ?? callableSignatures(model)[0]?.parameters; const name = escapeCode(memberName(model, options)); - if (params) { - return `${prefix}\`${escapeCode(signatureExpression(model, params, name))}\``; + if (!omitParams) { + const params = + specificSignature?.parameters ?? + model.parameters ?? + callableSignatures(model)[0]?.parameters; + if (params) { + return `${prefix}\`${escapeCode(signatureExpression(model, params, name))}\``; + } } return `${prefix}\`${name}\``; diff --git a/plugins/theme/partials/index.mjs b/plugins/theme/partials/index.mjs index 543a9cba..bea541e8 100644 --- a/plugins/theme/partials/index.mjs +++ b/plugins/theme/partials/index.mjs @@ -73,6 +73,51 @@ export default ctx => { .join('\n'); }, + signatures(model, options) { + const md = []; + const multipleSignatures = + model.signatures && model.signatures?.length > 1; + + if (model.comment && multipleSignatures) { + md.push( + ctx.partials.comment(model.comment, { + headingLevel: options.headingLevel + 1, + }) + ); + } + if (multipleSignatures && model.documents) { + md.push( + ctx.partials.documents(model, { + headingLevel: options.headingLevel + 1, + }) + ); + } + model.signatures?.forEach(signature => { + if (multipleSignatures) { + md.push( + heading( + options.headingLevel + 1, + getMemberTitle( + model, + { local: isTypePage(ctx.page.model) }, + signature + ) + ) + ); + } + md.push( + ctx.partials.signature(signature, { + headingLevel: multipleSignatures + ? options.headingLevel + 2 + : options.headingLevel + 1, + nested: options.nested, + multipleSignatures: false, + }) + ); + }); + return md.join('\n\n'); + }, + declaration(model, options) { const opts = { headingLevel: 2, nested: false, ...options }; const signatures = callableSignatures(model); @@ -260,14 +305,23 @@ 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, { headingLevel: multipleSignatures ? options.headingLevel + 1 : options.headingLevel, - multipleSignatures, + multipleSignatures: false, }) ); }); @@ -305,7 +359,12 @@ export default ctx => { }, memberTitle: model => - getMemberTitle(model, { local: isTypePage(ctx.page.model) }), + getMemberTitle( + model, + { local: isTypePage(ctx.page.model) }, + null, + model.signatures?.length > 1 + ), parametersList(parameters) { const flatList = []; From 6ae21aac4052949765ea63c39573dabc15aeded3 Mon Sep 17 00:00:00 2001 From: Mohamed Shams El-Deen Date: Sat, 15 Aug 2026 18:34:06 +0300 Subject: [PATCH 2/2] fix(theme): clean up overloaded methods rendering --- plugins/shared/titles.mjs | 21 ++++++----------- plugins/theme/partials/index.mjs | 40 ++++++++++++++++++++++++-------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/plugins/shared/titles.mjs b/plugins/shared/titles.mjs index 3b1ac33e..1ba9d6e2 100644 --- a/plugins/shared/titles.mjs +++ b/plugins/shared/titles.mjs @@ -107,23 +107,16 @@ export const getMemberPrefix = model => { return prefix ? `${prefix}: ` : ''; }; -export const getMemberTitle = ( - model, - options, - specificSignature = null, - omitParams = false -) => { +export const getMemberTitle = (model, options, specificSignature = null) => { const prefix = getMemberPrefix(model); const name = escapeCode(memberName(model, options)); - if (!omitParams) { - const params = - specificSignature?.parameters ?? - model.parameters ?? - callableSignatures(model)[0]?.parameters; - if (params) { - return `${prefix}\`${escapeCode(signatureExpression(model, params, name))}\``; - } + const params = + specificSignature?.parameters ?? + model.parameters ?? + callableSignatures(model)[0]?.parameters; + if (params) { + return `${prefix}\`${escapeCode(signatureExpression(model, params, name))}\``; } return `${prefix}\`${name}\``; diff --git a/plugins/theme/partials/index.mjs b/plugins/theme/partials/index.mjs index bea541e8..e8e864c0 100644 --- a/plugins/theme/partials/index.mjs +++ b/plugins/theme/partials/index.mjs @@ -96,7 +96,7 @@ export default ctx => { if (multipleSignatures) { md.push( heading( - options.headingLevel + 1, + options.headingLevel, getMemberTitle( model, { local: isTypePage(ctx.page.model) }, @@ -108,8 +108,8 @@ export default ctx => { md.push( ctx.partials.signature(signature, { headingLevel: multipleSignatures - ? options.headingLevel + 2 - : options.headingLevel + 1, + ? options.headingLevel + 1 + : options.headingLevel, nested: options.nested, multipleSignatures: false, }) @@ -226,6 +226,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); @@ -321,7 +346,7 @@ export default ctx => { headingLevel: multipleSignatures ? options.headingLevel + 1 : options.headingLevel, - multipleSignatures: false, + multipleSignatures, }) ); }); @@ -359,12 +384,7 @@ export default ctx => { }, memberTitle: model => - getMemberTitle( - model, - { local: isTypePage(ctx.page.model) }, - null, - model.signatures?.length > 1 - ), + getMemberTitle(model, { local: isTypePage(ctx.page.model) }), parametersList(parameters) { const flatList = [];