angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
74 lines (73 loc) • 8.48 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectCurrentRefinements } from 'instantsearch.js/es/connectors';
import { TypedBaseWidget } from '../typed-base-widget';
import { NgAisInstantSearch } from '../instantsearch/instantsearch';
import { NgAisIndex } from '../index-widget/index-widget';
import { noop } from '../utils';
export class NgAisCurrentRefinements extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('CurrentRefinements');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
createURL: () => '#',
refine: noop,
items: [],
canRefine: false,
};
}
get isHidden() {
return this.state.items.length === 0 && this.autoHideContainer;
}
ngOnInit() {
this.createWidget(connectCurrentRefinements, {
includedAttributes: this.includedAttributes,
excludedAttributes: this.excludedAttributes,
transformItems: this.transformItems,
}, {
$$widgetType: 'ais.currentRefinements',
});
super.ngOnInit();
}
handleClick(event, refinement) {
event.preventDefault();
this.state.refine(refinement);
}
}
NgAisCurrentRefinements.decorators = [
{ type: Component, args: [{
selector: 'ais-current-refinements',
template: `
<div
[class]="cx()"
*ngIf="!isHidden"
>
<ul
[class]="cx('list')"
*ngFor="let item of state.items"
>
<li [class]="cx('item')">
<span [class]="cx('label')">{{item.label | titlecase}}:</span>
<span
[class]="cx('category')"
*ngFor="let refinement of item.refinements"
>
<span [class]="cx('categoryLabel')">{{refinement.label}}</span>
<button [class]="cx('delete')" (click)="handleClick($event, refinement)">✕</button>
</span>
</li>
</ul>
</div>
`
},] }
];
NgAisCurrentRefinements.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisCurrentRefinements.propDecorators = {
includedAttributes: [{ type: Input }],
excludedAttributes: [{ type: Input }],
transformItems: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1yZWZpbmVtZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXJyZW50LXJlZmluZW1lbnRzL2N1cnJlbnQtcmVmaW5lbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFPM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBNEJoQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFHNUM7SUFvQkMsWUFHUyxXQUF1QixFQUV2QixxQkFBeUM7UUFFaEQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFKckIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFFdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQWhCM0MsVUFBSyxHQUFrQztZQUM1QyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztZQUNwQixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQWNGLENBQUM7SUFaRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2pFLENBQUM7SUFZTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FDZix5QkFBeUIsRUFDekI7WUFDRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLEVBQ0Q7WUFDRSxZQUFZLEVBQUUsd0JBQXdCO1NBQ3ZDLENBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sV0FBVyxDQUNoQixLQUFpQixFQUNqQixVQUF1RDtRQUV2RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7O1lBaEZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7YUFDRjs7O1lBNUJRLFVBQVUsdUJBcURkLE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQ25DLFFBQVE7WUF2REosa0JBQWtCLHVCQXlEdEIsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzs7O2lDQXRCN0MsS0FBSztpQ0FFTCxLQUFLOzZCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3QsIGZvcndhcmRSZWYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbm5lY3RDdXJyZW50UmVmaW5lbWVudHMgfSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMnO1xuaW1wb3J0IHtcbiAgQ3VycmVudFJlZmluZW1lbnRzQ29ubmVjdG9yUGFyYW1zLFxuICBDdXJyZW50UmVmaW5lbWVudHNDb25uZWN0b3JQYXJhbXNSZWZpbmVtZW50LFxuICBDdXJyZW50UmVmaW5lbWVudHNXaWRnZXREZXNjcmlwdGlvbixcbiAgQ3VycmVudFJlZmluZW1lbnRzUmVuZGVyU3RhdGUsXG59IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvY29ubmVjdG9ycy9jdXJyZW50LXJlZmluZW1lbnRzL2Nvbm5lY3RDdXJyZW50UmVmaW5lbWVudHMnO1xuaW1wb3J0IHsgVHlwZWRCYXNlV2lkZ2V0IH0gZnJvbSAnLi4vdHlwZWQtYmFzZS13aWRnZXQnO1xuaW1wb3J0IHsgTmdBaXNJbnN0YW50U2VhcmNoIH0gZnJvbSAnLi4vaW5zdGFudHNlYXJjaC9pbnN0YW50c2VhcmNoJztcbmltcG9ydCB7IE5nQWlzSW5kZXggfSBmcm9tICcuLi9pbmRleC13aWRnZXQvaW5kZXgtd2lkZ2V0JztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fpcy1jdXJyZW50LXJlZmluZW1lbnRzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwiY3goKVwiXG4gICAgICAqbmdJZj1cIiFpc0hpZGRlblwiXG4gICAgPlxuICAgICAgPHVsXG4gICAgICAgIFtjbGFzc109XCJjeCgnbGlzdCcpXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhdGUuaXRlbXNcIlxuICAgICAgPlxuICAgICAgICA8bGkgW2NsYXNzXT1cImN4KCdpdGVtJylcIj5cbiAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY3goJ2xhYmVsJylcIj57e2l0ZW0ubGFiZWwgfCB0aXRsZWNhc2V9fTo8L3NwYW4+XG5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2NsYXNzXT1cImN4KCdjYXRlZ29yeScpXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZWZpbmVtZW50IG9mIGl0ZW0ucmVmaW5lbWVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJjeCgnY2F0ZWdvcnlMYWJlbCcpXCI+e3tyZWZpbmVtZW50LmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCJjeCgnZGVsZXRlJylcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCByZWZpbmVtZW50KVwiPuKclTwvYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE5nQWlzQ3VycmVudFJlZmluZW1lbnRzIGV4dGVuZHMgVHlwZWRCYXNlV2lkZ2V0PFxuICBDdXJyZW50UmVmaW5lbWVudHNXaWRnZXREZXNjcmlwdGlvbixcbiAgQ3VycmVudFJlZmluZW1lbnRzQ29ubmVjdG9yUGFyYW1zXG4+IHtcbiAgLy8gaW5zdGFuY2Ugb3B0aW9uc1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW5jbHVkZWRBdHRyaWJ1dGVzPzogQ3VycmVudFJlZmluZW1lbnRzQ29ubmVjdG9yUGFyYW1zWydpbmNsdWRlZEF0dHJpYnV0ZXMnXTtcbiAgQElucHV0KClcbiAgcHVibGljIGV4Y2x1ZGVkQXR0cmlidXRlcz86IEN1cnJlbnRSZWZpbmVtZW50c0Nvbm5lY3RvclBhcmFtc1snZXhjbHVkZWRBdHRyaWJ1dGVzJ107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmFuc2Zvcm1JdGVtcz86IEN1cnJlbnRSZWZpbmVtZW50c0Nvbm5lY3RvclBhcmFtc1sndHJhbnNmb3JtSXRlbXMnXTtcblxuICBwdWJsaWMgc3RhdGU6IEN1cnJlbnRSZWZpbmVtZW50c1JlbmRlclN0YXRlID0ge1xuICAgIGNyZWF0ZVVSTDogKCkgPT4gJyMnLFxuICAgIHJlZmluZTogbm9vcCxcbiAgICBpdGVtczogW10sXG4gICAgY2FuUmVmaW5lOiBmYWxzZSxcbiAgfTtcblxuICBnZXQgaXNIaWRkZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuaXRlbXMubGVuZ3RoID09PSAwICYmIHRoaXMuYXV0b0hpZGVDb250YWluZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbmRleCkpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50SW5kZXg6IE5nQWlzSW5kZXgsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5zdGFudFNlYXJjaCkpXG4gICAgcHVibGljIGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoXG4gICkge1xuICAgIHN1cGVyKCdDdXJyZW50UmVmaW5lbWVudHMnKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZVdpZGdldChcbiAgICAgIGNvbm5lY3RDdXJyZW50UmVmaW5lbWVudHMsXG4gICAgICB7XG4gICAgICAgIGluY2x1ZGVkQXR0cmlidXRlczogdGhpcy5pbmNsdWRlZEF0dHJpYnV0ZXMsXG4gICAgICAgIGV4Y2x1ZGVkQXR0cmlidXRlczogdGhpcy5leGNsdWRlZEF0dHJpYnV0ZXMsXG4gICAgICAgIHRyYW5zZm9ybUl0ZW1zOiB0aGlzLnRyYW5zZm9ybUl0ZW1zLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgJCR3aWRnZXRUeXBlOiAnYWlzLmN1cnJlbnRSZWZpbmVtZW50cycsXG4gICAgICB9XG4gICAgKTtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWNrKFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIHJlZmluZW1lbnQ6IEN1cnJlbnRSZWZpbmVtZW50c0Nvbm5lY3RvclBhcmFtc1JlZmluZW1lbnRcbiAgKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnN0YXRlLnJlZmluZShyZWZpbmVtZW50KTtcbiAgfVxufVxuIl19