diff --git a/src/lib/DocSearch.js b/src/lib/DocSearch.js index da149871..c358f3d8 100644 --- a/src/lib/DocSearch.js +++ b/src/lib/DocSearch.js @@ -189,7 +189,6 @@ class DocSearch { let url = DocSearch.formatURL(hit); let category = utils.getHighlightedValue(hit, 'lvl0'); let subcategory = utils.getHighlightedValue(hit, 'lvl1') || category; - let isSubcategoryDuplicate = subcategory == category; let displayTitle = utils.compact([ utils.getHighlightedValue(hit, 'lvl2') || subcategory, utils.getHighlightedValue(hit, 'lvl3'), @@ -197,15 +196,18 @@ class DocSearch { utils.getHighlightedValue(hit, 'lvl5'), utils.getHighlightedValue(hit, 'lvl6') ]).join(''); - let isDisplayTitleDuplicate = displayTitle == subcategory; let text = utils.getSnippetedValue(hit, 'content'); let isTextOrSubcatoryNonEmpty = (subcategory && subcategory != "") || (displayTitle && displayTitle != ""); + let isLvl2 = displayTitle && displayTitle != '' && displayTitle != subcategory; + let isLvl1 = !isLvl2 && (subcategory && subcategory != '' && subcategory != category); + let isLvl0 = !isLvl1 && !isLvl2; return { + isLvl0: isLvl0, + isLvl1: isLvl1, + isLvl2: isLvl2, isCategoryHeader: hit.isCategoryHeader, isSubCategoryHeader: hit.isSubCategoryHeader, - isSubcategoryDuplicate: isSubcategoryDuplicate, - isDisplayTitleDuplicate: isDisplayTitleDuplicate, isTextOrSubcatoryNonEmpty: isTextOrSubcatoryNonEmpty, category: category, subcategory: subcategory, @@ -238,10 +240,10 @@ class DocSearch { } static getSuggestionTemplate(isSimpleLayout) { - const template = Hogan.compile(templates.suggestion); + var stringTemplate = isSimpleLayout ? templates.suggestionSimple : templates.suggestion + const template = Hogan.compile(stringTemplate); return (suggestion) => { - isSimpleLayout = isSimpleLayout || false; - return template.render({isSimpleLayout, ...suggestion}); + return template.render(suggestion); }; } diff --git a/src/lib/templates.js b/src/lib/templates.js index a0a3b208..aaab9b5c 100644 --- a/src/lib/templates.js +++ b/src/lib/templates.js @@ -7,29 +7,63 @@ let templates = {
{{{category}}} - {{#isSimpleLayout}} - {{{subcategory}}} - {{/isSimpleLayout}}
-
+
{{{subcategory}}}
{{#isTextOrSubcatoryNonEmpty}}
-
{{{subcategory}}}
-
{{{title}}}
+
{{{subcategory}}}
+
{{{title}}}
{{#text}}
{{{text}}}
{{/text}}
{{/isTextOrSubcatoryNonEmpty}}
`, + suggestionSimple: ` +
+ +
+ {{^isLvl0}} + {{{category}}} + {{/isLvl0}} + {{^isLvl1}} + + {{{subcategory}}} + + {{/isLvl1}} + +
+ {{#isLvl2}} + {{{title}}} + {{/isLvl2}} + {{#isLvl1}} + {{{subcategory}}} + {{/isLvl1}} + {{#isLvl0}} + {{{category}}} + {{/isLvl0}} +
+
+
+ {{#text}} +
+
{{{text}}}
+
+ {{/text}} +
+
+ `, footer: `
Search by diff --git a/test/DocSearch-test.js b/test/DocSearch-test.js index 9595649c..f59aad06 100644 --- a/test/DocSearch-test.js +++ b/test/DocSearch-test.js @@ -984,7 +984,7 @@ describe('DocSearch', () => { // Then expect(render.calledOnce).toBe(true); - expect(render.args[0][0]).toEqual({'isSimpleLayout': false, 'foo': 'bar'}); + expect(render.args[0][0]).toEqual({'foo': 'bar'}); }); }); });