angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
78 lines • 8.07 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectNumericMenu } 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 NgAisNumericMenu extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('NumericMenu');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
items: [],
refine: noop,
createURL: () => '#',
hasNoResults: true,
sendEvent: noop,
canRefine: false,
};
}
get isHidden() {
return this.state.items.length === 0 && this.autoHideContainer;
}
ngOnInit() {
this.createWidget(connectNumericMenu, {
attribute: this.attribute,
items: this.items,
transformItems: this.transformItems,
}, {
$$widgetType: 'ais.numericMenu',
});
super.ngOnInit();
}
refine(event, item) {
event.preventDefault();
event.stopPropagation();
this.state.refine(item.value);
}
}
NgAisNumericMenu.decorators = [
{ type: Component, args: [{
selector: 'ais-numeric-menu',
template: `
<div
[class]="cx()"
*ngIf="!isHidden"
>
<ul [class]="cx('list')">
<li
[class]="getItemClass(item)"
*ngFor="let item of state.items"
>
<label [class]="cx('label')">
<input
[class]="cx('radio')"
type="radio"
name="NumericMenu"
[checked]="item.isRefined"
(change)="refine($event, item)"
/>
<span [class]="cx('labelText')">{{item.label}}</span>
</label>
</li>
</ul>
</div>
`
},] }
];
NgAisNumericMenu.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisNumericMenu.propDecorators = {
attribute: [{ type: Input }],
items: [{ type: Input }],
transformItems: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL251bWVyaWMtbWVudS9udW1lcmljLW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBa0NoQyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFHckM7SUFrQkMsWUFHUyxXQUF1QixFQUV2QixxQkFBeUM7UUFFaEQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBSmQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFFdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQWxCM0MsVUFBSyxHQUEyQjtZQUNyQyxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUc7WUFDcEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsS0FBSztTQUNqQixDQUFDO0lBY0YsQ0FBQztJQVpELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDakUsQ0FBQztJQVlNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUNmLGtCQUFrQixFQUNsQjtZQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLEVBQ0Q7WUFDRSxZQUFZLEVBQUUsaUJBQWlCO1NBQ2hDLENBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQVksRUFBRSxJQUF1QjtRQUNqRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7WUE3RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7YUFDRjs7O1lBbENRLFVBQVUsdUJBeURkLE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQ25DLFFBQVE7WUEzREosa0JBQWtCLHVCQTZEdEIsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzs7O3dCQXJCN0MsS0FBSztvQkFDTCxLQUFLOzZCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3QsIGZvcndhcmRSZWYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbm5lY3ROdW1lcmljTWVudSB9IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBUeXBlZEJhc2VXaWRnZXQgfSBmcm9tICcuLi90eXBlZC1iYXNlLXdpZGdldCc7XG5pbXBvcnQgeyBOZ0Fpc0luc3RhbnRTZWFyY2ggfSBmcm9tICcuLi9pbnN0YW50c2VhcmNoL2luc3RhbnRzZWFyY2gnO1xuaW1wb3J0IHsgTmdBaXNJbmRleCB9IGZyb20gJy4uL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIE51bWVyaWNNZW51Q29ubmVjdG9yUGFyYW1zLFxuICBOdW1lcmljTWVudVdpZGdldERlc2NyaXB0aW9uLFxuICBOdW1lcmljTWVudVJlbmRlclN0YXRlLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMvbnVtZXJpYy1tZW51L2Nvbm5lY3ROdW1lcmljTWVudSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fpcy1udW1lcmljLW1lbnUnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJjeCgpXCJcbiAgICAgICpuZ0lmPVwiIWlzSGlkZGVuXCJcbiAgICA+XG4gICAgICA8dWwgW2NsYXNzXT1cImN4KCdsaXN0JylcIj5cbiAgICAgICAgPGxpXG4gICAgICAgICAgW2NsYXNzXT1cImdldEl0ZW1DbGFzcyhpdGVtKVwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3RhdGUuaXRlbXNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIFtjbGFzc109XCJjeCgnbGFiZWwnKVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIFtjbGFzc109XCJjeCgncmFkaW8nKVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJOdW1lcmljTWVudVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uaXNSZWZpbmVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJyZWZpbmUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImN4KCdsYWJlbFRleHQnKVwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc051bWVyaWNNZW51IGV4dGVuZHMgVHlwZWRCYXNlV2lkZ2V0PFxuICBOdW1lcmljTWVudVdpZGdldERlc2NyaXB0aW9uLFxuICBOdW1lcmljTWVudUNvbm5lY3RvclBhcmFtc1xuPiB7XG4gIEBJbnB1dCgpIHB1YmxpYyBhdHRyaWJ1dGU6IE51bWVyaWNNZW51Q29ubmVjdG9yUGFyYW1zWydhdHRyaWJ1dGUnXTtcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBOdW1lcmljTWVudUNvbm5lY3RvclBhcmFtc1snaXRlbXMnXTtcbiAgQElucHV0KCkgcHVibGljIHRyYW5zZm9ybUl0ZW1zPzogTnVtZXJpY01lbnVDb25uZWN0b3JQYXJhbXNbJ3RyYW5zZm9ybUl0ZW1zJ107XG5cbiAgcHVibGljIHN0YXRlOiBOdW1lcmljTWVudVJlbmRlclN0YXRlID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICByZWZpbmU6IG5vb3AsXG4gICAgY3JlYXRlVVJMOiAoKSA9PiAnIycsXG4gICAgaGFzTm9SZXN1bHRzOiB0cnVlLFxuICAgIHNlbmRFdmVudDogbm9vcCxcbiAgICBjYW5SZWZpbmU6IGZhbHNlLFxuICB9O1xuXG4gIGdldCBpc0hpZGRlbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5hdXRvSGlkZUNvbnRhaW5lcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ0Fpc0luZGV4KSlcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBwYXJlbnRJbmRleDogTmdBaXNJbmRleCxcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbnN0YW50U2VhcmNoKSlcbiAgICBwdWJsaWMgaW5zdGFudFNlYXJjaEluc3RhbmNlOiBOZ0Fpc0luc3RhbnRTZWFyY2hcbiAgKSB7XG4gICAgc3VwZXIoJ051bWVyaWNNZW51Jyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0TnVtZXJpY01lbnUsXG4gICAgICB7XG4gICAgICAgIGF0dHJpYnV0ZTogdGhpcy5hdHRyaWJ1dGUsXG4gICAgICAgIGl0ZW1zOiB0aGlzLml0ZW1zLFxuICAgICAgICB0cmFuc2Zvcm1JdGVtczogdGhpcy50cmFuc2Zvcm1JdGVtcyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgICQkd2lkZ2V0VHlwZTogJ2Fpcy5udW1lcmljTWVudScsXG4gICAgICB9XG4gICAgKTtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHJlZmluZShldmVudDogRXZlbnQsIGl0ZW06IHsgdmFsdWU6IHN0cmluZyB9KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnN0YXRlLnJlZmluZShpdGVtLnZhbHVlKTtcbiAgfVxufVxuIl19