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] 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 = [];