UI libraries / InstantSearch.js / Widgets
Signature
components.ReverseSnippet({
  attribute: string,
  hit: object,
  // Optional parameters
  highlightedTagName: string,
  nonHighlightedTagName: string,
  separator: string,
  cssClasses: object,
});

About this widget

The reverseSnippet function returns any attribute from a hit into its snippeted form, when relevant.

This function leverages the snippeting feature of Algolia and is designed to work with the hits or infiniteHits widget.

The attribute must be set in attributesToSnippet, either inside the Algolia dashboard or at runtime:

1
2
3
4
5
search.addWidgets([
  configure({
    attributesToSnippet: ['description'],
  })
]);

Examples

1
2
3
4
5
6
7
8
9
10
11
hits({
  container: '#hits',
  templates: {
    item(hit, { html, components }) {
      return html`
        <h2>${hit.name}</h2>
        <p>${components.ReverseSnippet({ attribute: 'description', hit })}</p>
      `;
    },
  },
});

Options

attribute
type: string
Required

The attribute of the record to snippet. You can give a dot-separated value for deeply nested objects, like description.full.

1
2
3
4
components.ReverseSnippet({
  // ...
  attribute: 'description.full',
});
hit
type: object
Required

Original hit object provided to the function. Note that the value is already bound to the function inside a string template, so you don’t have to provide it. For this to work, the provided object must have a _snippetResult[attribute].value property.

1
2
3
4
components.ReverseSnippet({
  // ...
  hit: item,
});
highlightedTagName
type: string
default: mark
Optional

The name of the HTML element to wrap the snippeted parts of the string.

1
2
3
4
components.ReverseSnippet({
  // ...
  highlightedTagName: 'em',
});
nonHighlightedTagName
type: string
default: "span"
Optional

The HTML element that wraps the non-highlighted parts of the string.

1
2
3
4
components.ReverseSnippet({
  // ...
  nonHighlightedTagName: 'div',
});
separator
type: string
default: ", "
Optional

The character between each item when the attribute to highlight is an array.

1
2
3
4
components.ReverseSnippet({
  // ...
  separator: ' - ',
});
cssClasses
type: object
default: {}
Optional

The CSS classes you can override:

  • root: the component’s root element.
  • highlighted: the highlighted parts.
  • nonHighlighted: the non-highlighted parts.
  • separator: the separator elements between highlighted parts.
1
2
3
4
5
6
7
8
9
10
components.ReverseSnippet({
  // ...
  cssClasses: {
    root: 'MyCustomReverseSnippet',
    highlighted: [
      'MyCustomReverseSnippetPart',
      'MyCustomReverseSnippetPart--subclass',
    ],
  },
});

HTML output

1
<span>This is the <mark class="ais-Snippet-highlighted">highlighted text</mark></span>
Did you find this page helpful?
InstantSearch.js v4