UNPKG

angular-instantsearch

Version:

Lightning-fast search for Angular apps, by Algolia.

74 lines (73 loc) 8.48 kB
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