angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
60 lines • 6.35 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectSortBy } 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 NgAisSortBy extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('SortBy');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
currentRefinement: null,
options: [],
refine: noop,
hasNoResults: false,
canRefine: false,
};
}
ngOnInit() {
this.createWidget(connectSortBy, {
items: this.items,
transformItems: this.transformItems,
}, {
$$widgetType: 'ais.sortBy',
});
super.ngOnInit();
}
}
NgAisSortBy.decorators = [
{ type: Component, args: [{
selector: 'ais-sort-by',
template: `
<div [class]="cx()">
<select
[class]="cx('select')"
(change)="state.refine($event.target.value)"
>
<option
[class]="cx('option')"
*ngFor="let item of state.options"
[value]="item.value"
[selected]="item.value === state.currentRefinement"
>
{{item.label}}
</option>
</select>
</div>
`
},] }
];
NgAisSortBy.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisSortBy.propDecorators = {
items: [{ type: Input }],
transformItems: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3J0LWJ5L3NvcnQtYnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQXFDaEMsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUdoQztJQWFDLFlBR1MsV0FBdUIsRUFFdkIscUJBQXlDO1FBRWhELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUpULGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBRXZCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7UUFiM0MsVUFBSyxHQUFzQjtZQUNoQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsS0FBSztZQUNuQixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO0lBVUYsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUNmLGFBQWEsRUFDYjtZQUNFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsRUFDRDtZQUNFLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7WUExREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQ7YUFDRjs7O1lBckNRLFVBQVUsdUJBdURkLE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQ25DLFFBQVE7WUF6REosa0JBQWtCLHVCQTJEdEIsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzs7O29CQWhCN0MsS0FBSzs2QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBmb3J3YXJkUmVmLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb25uZWN0U29ydEJ5IH0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9jb25uZWN0b3JzJztcbmltcG9ydCB7IFR5cGVkQmFzZVdpZGdldCB9IGZyb20gJy4uL3R5cGVkLWJhc2Utd2lkZ2V0JztcbmltcG9ydCB7IE5nQWlzSW5zdGFudFNlYXJjaCB9IGZyb20gJy4uL2luc3RhbnRzZWFyY2gvaW5zdGFudHNlYXJjaCc7XG5pbXBvcnQgeyBOZ0Fpc0luZGV4IH0gZnJvbSAnLi4vaW5kZXgtd2lkZ2V0L2luZGV4LXdpZGdldCc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgU29ydEJ5Q29ubmVjdG9yLFxuICBTb3J0QnlDb25uZWN0b3JQYXJhbXMsXG4gIFNvcnRCeVdpZGdldERlc2NyaXB0aW9uLFxuICBTb3J0QnlSZW5kZXJTdGF0ZSxcbiAgU29ydEJ5SXRlbSxcbn0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9jb25uZWN0b3JzL3NvcnQtYnkvY29ubmVjdFNvcnRCeSc7XG5cbmV4cG9ydCB7XG4gIFNvcnRCeUNvbm5lY3RvcixcbiAgU29ydEJ5Q29ubmVjdG9yUGFyYW1zLFxuICBTb3J0QnlXaWRnZXREZXNjcmlwdGlvbixcbiAgU29ydEJ5UmVuZGVyU3RhdGUsXG4gIFNvcnRCeUl0ZW0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtc29ydC1ieScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY3goKVwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBbY2xhc3NdPVwiY3goJ3NlbGVjdCcpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJzdGF0ZS5yZWZpbmUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgW2NsYXNzXT1cImN4KCdvcHRpb24nKVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhdGUub3B0aW9uc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtLnZhbHVlID09PSBzdGF0ZS5jdXJyZW50UmVmaW5lbWVudFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e2l0ZW0ubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc1NvcnRCeSBleHRlbmRzIFR5cGVkQmFzZVdpZGdldDxcbiAgU29ydEJ5V2lkZ2V0RGVzY3JpcHRpb24sXG4gIFNvcnRCeUNvbm5lY3RvclBhcmFtc1xuPiB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtczogU29ydEJ5SXRlbVtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdHJhbnNmb3JtSXRlbXM/OiA8VSBleHRlbmRzIFNvcnRCeUl0ZW0+KGl0ZW1zOiBTb3J0QnlJdGVtW10pID0+IFVbXTtcblxuICBwdWJsaWMgc3RhdGU6IFNvcnRCeVJlbmRlclN0YXRlID0ge1xuICAgIGN1cnJlbnRSZWZpbmVtZW50OiBudWxsLFxuICAgIG9wdGlvbnM6IFtdLFxuICAgIHJlZmluZTogbm9vcCxcbiAgICBoYXNOb1Jlc3VsdHM6IGZhbHNlLFxuICAgIGNhblJlZmluZTogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5kZXgpKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEluZGV4OiBOZ0Fpc0luZGV4LFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ0Fpc0luc3RhbnRTZWFyY2gpKVxuICAgIHB1YmxpYyBpbnN0YW50U2VhcmNoSW5zdGFuY2U6IE5nQWlzSW5zdGFudFNlYXJjaFxuICApIHtcbiAgICBzdXBlcignU29ydEJ5Jyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0U29ydEJ5LFxuICAgICAge1xuICAgICAgICBpdGVtczogdGhpcy5pdGVtcyxcbiAgICAgICAgdHJhbnNmb3JtSXRlbXM6IHRoaXMudHJhbnNmb3JtSXRlbXMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAkJHdpZGdldFR5cGU6ICdhaXMuc29ydEJ5JyxcbiAgICAgIH1cbiAgICApO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cbn1cbiJdfQ==