angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
65 lines (64 loc) • 7.04 kB
JavaScript
import { Inject, Input, Component, ContentChild, TemplateRef, forwardRef, Optional, } from '@angular/core';
import { connectHitsWithInsights } from 'instantsearch.js/es/connectors';
import { TypedBaseWidget } from '../typed-base-widget';
import { NgAisInstantSearch } from '../instantsearch/instantsearch';
import { NgAisIndex } from '../index-widget/index-widget';
export class NgAisHits extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('Hits');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
hits: [],
results: undefined,
bindEvent: undefined,
sendEvent: undefined,
};
this.updateState = (state, isFirstRendering) => {
if (isFirstRendering)
return;
this.state = state;
};
}
ngOnInit() {
this.createWidget(connectHitsWithInsights, {
escapeHTML: this.escapeHTML,
transformItems: this.transformItems,
}, {
$$widgetType: 'ais.hits',
});
super.ngOnInit();
}
}
NgAisHits.decorators = [
{ type: Component, args: [{
selector: 'ais-hits',
template: `
<div [class]="cx()">
<ng-container *ngTemplateOutlet="template; context: state"></ng-container>
<!-- default rendering if no template specified -->
<div *ngIf="!template">
<ul [class]="cx('list')">
<li
[class]="cx('item')"
*ngFor="let hit of state.hits"
>
<ais-highlight attribute="name" [hit]="hit">
</ais-highlight>
</li>
</ul>
</div>
</div>
`
},] }
];
NgAisHits.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisHits.propDecorators = {
template: [{ type: ContentChild, args: [TemplateRef, { static: false },] }],
escapeHTML: [{ type: Input }],
transformItems: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oaXRzL2hpdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU16RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBdUIxRCxNQUFNLE9BQU8sU0FBVSxTQUFRLGVBRzlCO0lBY0MsWUFHUyxXQUF1QixFQUV2QixxQkFBeUM7UUFFaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSlAsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFFdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQVozQyxVQUFLLEdBQW9CO1lBQzlCLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQTBCSyxnQkFBVyxHQUFHLENBQUMsS0FBc0IsRUFBRSxnQkFBeUIsRUFBRSxFQUFFO1lBQ3pFLElBQUksZ0JBQWdCO2dCQUFFLE9BQU87WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQyxDQUFDO0lBbkJGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FDZix1QkFBdUIsRUFDdkI7WUFDRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLEVBQ0Q7WUFDRSxZQUFZLEVBQUUsVUFBVTtTQUN6QixDQUNGLENBQUM7UUFDRixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7O1lBNURGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDthQUNGOzs7WUF0QlEsVUFBVSx1QkF5Q2QsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FDbkMsUUFBUTtZQTNDSixrQkFBa0IsdUJBNkN0QixNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzs7dUJBakI3QyxZQUFZLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt5QkFHM0MsS0FBSzs2QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBmb3J3YXJkUmVmLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbm5lY3RIaXRzV2l0aEluc2lnaHRzIH0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9jb25uZWN0b3JzJztcbmltcG9ydCB7XG4gIEhpdHNDb25uZWN0b3JQYXJhbXMsXG4gIEhpdHNXaWRnZXREZXNjcmlwdGlvbixcbiAgSGl0c1JlbmRlclN0YXRlLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMvaGl0cy9jb25uZWN0SGl0cyc7XG5pbXBvcnQgeyBUeXBlZEJhc2VXaWRnZXQgfSBmcm9tICcuLi90eXBlZC1iYXNlLXdpZGdldCc7XG5pbXBvcnQgeyBOZ0Fpc0luc3RhbnRTZWFyY2ggfSBmcm9tICcuLi9pbnN0YW50c2VhcmNoL2luc3RhbnRzZWFyY2gnO1xuaW1wb3J0IHsgTmdBaXNJbmRleCB9IGZyb20gJy4uL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtaGl0cycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY3goKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiBzdGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIGRlZmF1bHQgcmVuZGVyaW5nIGlmIG5vIHRlbXBsYXRlIHNwZWNpZmllZCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCIhdGVtcGxhdGVcIj5cbiAgICAgICAgPHVsIFtjbGFzc109XCJjeCgnbGlzdCcpXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBbY2xhc3NdPVwiY3goJ2l0ZW0nKVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaGl0IG9mIHN0YXRlLmhpdHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhaXMtaGlnaGxpZ2h0IGF0dHJpYnV0ZT1cIm5hbWVcIiBbaGl0XT1cImhpdFwiPlxuICAgICAgICAgICAgPC9haXMtaGlnaGxpZ2h0PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTmdBaXNIaXRzIGV4dGVuZHMgVHlwZWRCYXNlV2lkZ2V0PFxuICBIaXRzV2lkZ2V0RGVzY3JpcHRpb24sXG4gIEhpdHNDb25uZWN0b3JQYXJhbXNcbj4ge1xuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgZXNjYXBlSFRNTD86IEhpdHNDb25uZWN0b3JQYXJhbXNbJ2VzY2FwZUhUTUwnXTtcbiAgQElucHV0KCkgcHVibGljIHRyYW5zZm9ybUl0ZW1zPzogSGl0c0Nvbm5lY3RvclBhcmFtc1sndHJhbnNmb3JtSXRlbXMnXTtcblxuICBwdWJsaWMgc3RhdGU6IEhpdHNSZW5kZXJTdGF0ZSA9IHtcbiAgICBoaXRzOiBbXSxcbiAgICByZXN1bHRzOiB1bmRlZmluZWQsXG4gICAgYmluZEV2ZW50OiB1bmRlZmluZWQsXG4gICAgc2VuZEV2ZW50OiB1bmRlZmluZWQsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5kZXgpKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEluZGV4OiBOZ0Fpc0luZGV4LFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ0Fpc0luc3RhbnRTZWFyY2gpKVxuICAgIHB1YmxpYyBpbnN0YW50U2VhcmNoSW5zdGFuY2U6IE5nQWlzSW5zdGFudFNlYXJjaFxuICApIHtcbiAgICBzdXBlcignSGl0cycpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0SGl0c1dpdGhJbnNpZ2h0cyxcbiAgICAgIHtcbiAgICAgICAgZXNjYXBlSFRNTDogdGhpcy5lc2NhcGVIVE1MLFxuICAgICAgICB0cmFuc2Zvcm1JdGVtczogdGhpcy50cmFuc2Zvcm1JdGVtcyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgICQkd2lkZ2V0VHlwZTogJ2Fpcy5oaXRzJyxcbiAgICAgIH1cbiAgICApO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGUgPSAoc3RhdGU6IEhpdHNSZW5kZXJTdGF0ZSwgaXNGaXJzdFJlbmRlcmluZzogYm9vbGVhbikgPT4ge1xuICAgIGlmIChpc0ZpcnN0UmVuZGVyaW5nKSByZXR1cm47XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICB9O1xufVxuIl19