angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
76 lines (74 loc) • 7.93 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectToggleRefinement } 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 NgAisToggle extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('ToggleRefinement');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
canRefine: false,
sendEvent: undefined,
value: {
count: undefined,
isRefined: false,
name: '',
offFacetValue: undefined,
onFacetValue: undefined,
},
createURL: () => '#',
refine: noop,
};
}
ngOnInit() {
this.createWidget(connectToggleRefinement, {
attribute: this.attribute,
on: this.on,
off: this.off,
}, {
$$widgetType: 'ais.toggleRefinement',
});
super.ngOnInit();
}
handleChange(event) {
event.preventDefault();
event.stopPropagation();
this.state.refine(this.state.value);
}
}
NgAisToggle.decorators = [
{ type: Component, args: [{
selector: 'ais-toggle',
template: `
<div [class]='cx()'>
<label [class]="cx('label')">
<input
[class]="cx('checkbox')"
type='checkbox'
value='{{state.value.name}}'
[checked]='state.value.isRefined'
(change)='handleChange($event)'
/>
<span [class]="cx('labelText')">
{{label || state.value.name}}
</span>
<span [class]="cx('count')">{{state.value.count}}</span>
</label>
</div>
`
},] }
];
NgAisToggle.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisToggle.propDecorators = {
label: [{ type: Input }],
attribute: [{ type: Input }],
on: [{ type: Input }],
off: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RvZ2dsZS90b2dnbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBNkJoQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBR2hDO0lBdUJDLFlBR1MsV0FBdUIsRUFFdkIscUJBQXlDO1FBRWhELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSm5CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBRXZCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7UUFuQjNDLFVBQUssR0FBZ0M7WUFDMUMsU0FBUyxFQUFFLEtBQUs7WUFDaEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxTQUFTO2dCQUNoQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsYUFBYSxFQUFFLFNBQVM7Z0JBQ3hCLFlBQVksRUFBRSxTQUFTO2FBQ3hCO1lBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUc7WUFDcEIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO0lBVUYsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUNmLHVCQUF1QixFQUN2QjtZQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxFQUNEO1lBQ0UsWUFBWSxFQUFFLHNCQUFzQjtTQUNyQyxDQUNGLENBQUM7UUFDRixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFZO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7WUE3RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDthQUNGOzs7WUE3QlEsVUFBVSx1QkF5RGQsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FDbkMsUUFBUTtZQTNESixrQkFBa0IsdUJBNkR0QixNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzs7b0JBekI3QyxLQUFLO3dCQUdMLEtBQUs7aUJBQ0wsS0FBSztrQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBmb3J3YXJkUmVmLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb25uZWN0VG9nZ2xlUmVmaW5lbWVudCB9IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBUeXBlZEJhc2VXaWRnZXQgfSBmcm9tICcuLi90eXBlZC1iYXNlLXdpZGdldCc7XG5pbXBvcnQgeyBOZ0Fpc0luc3RhbnRTZWFyY2ggfSBmcm9tICcuLi9pbnN0YW50c2VhcmNoL2luc3RhbnRzZWFyY2gnO1xuaW1wb3J0IHsgTmdBaXNJbmRleCB9IGZyb20gJy4uL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIFRvZ2dsZVJlZmluZW1lbnRDb25uZWN0b3JQYXJhbXMsXG4gIFRvZ2dsZVJlZmluZW1lbnRXaWRnZXREZXNjcmlwdGlvbixcbiAgVG9nZ2xlUmVmaW5lbWVudFJlbmRlclN0YXRlLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMvdG9nZ2xlLXJlZmluZW1lbnQvY29ubmVjdFRvZ2dsZVJlZmluZW1lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtdG9nZ2xlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109J2N4KCknPlxuICAgICAgPGxhYmVsIFtjbGFzc109XCJjeCgnbGFiZWwnKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbY2xhc3NdPVwiY3goJ2NoZWNrYm94JylcIlxuICAgICAgICAgIHR5cGU9J2NoZWNrYm94J1xuICAgICAgICAgIHZhbHVlPSd7e3N0YXRlLnZhbHVlLm5hbWV9fSdcbiAgICAgICAgICBbY2hlY2tlZF09J3N0YXRlLnZhbHVlLmlzUmVmaW5lZCdcbiAgICAgICAgICAoY2hhbmdlKT0naGFuZGxlQ2hhbmdlKCRldmVudCknXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHNwYW4gW2NsYXNzXT1cImN4KCdsYWJlbFRleHQnKVwiPlxuICAgICAgICAgIHt7bGFiZWwgfHwgc3RhdGUudmFsdWUubmFtZX19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY3goJ2NvdW50JylcIj57e3N0YXRlLnZhbHVlLmNvdW50fX08L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc1RvZ2dsZSBleHRlbmRzIFR5cGVkQmFzZVdpZGdldDxcbiAgVG9nZ2xlUmVmaW5lbWVudFdpZGdldERlc2NyaXB0aW9uLFxuICBUb2dnbGVSZWZpbmVtZW50Q29ubmVjdG9yUGFyYW1zXG4+IHtcbiAgLy8gcmVuZGVyaW5nIG9wdGlvbnNcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XG5cbiAgLy8gaW5zdGFuY2Ugb3B0aW9uc1xuICBASW5wdXQoKSBwdWJsaWMgYXR0cmlidXRlOiBUb2dnbGVSZWZpbmVtZW50Q29ubmVjdG9yUGFyYW1zWydhdHRyaWJ1dGUnXTtcbiAgQElucHV0KCkgcHVibGljIG9uPzogVG9nZ2xlUmVmaW5lbWVudENvbm5lY3RvclBhcmFtc1snb24nXTtcbiAgQElucHV0KCkgcHVibGljIG9mZj86IFRvZ2dsZVJlZmluZW1lbnRDb25uZWN0b3JQYXJhbXNbJ29mZiddO1xuXG4gIHB1YmxpYyBzdGF0ZTogVG9nZ2xlUmVmaW5lbWVudFJlbmRlclN0YXRlID0ge1xuICAgIGNhblJlZmluZTogZmFsc2UsXG4gICAgc2VuZEV2ZW50OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHtcbiAgICAgIGNvdW50OiB1bmRlZmluZWQsXG4gICAgICBpc1JlZmluZWQ6IGZhbHNlLFxuICAgICAgbmFtZTogJycsXG4gICAgICBvZmZGYWNldFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBvbkZhY2V0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIGNyZWF0ZVVSTDogKCkgPT4gJyMnLFxuICAgIHJlZmluZTogbm9vcCxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbmRleCkpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50SW5kZXg6IE5nQWlzSW5kZXgsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5zdGFudFNlYXJjaCkpXG4gICAgcHVibGljIGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoXG4gICkge1xuICAgIHN1cGVyKCdUb2dnbGVSZWZpbmVtZW50Jyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0VG9nZ2xlUmVmaW5lbWVudCxcbiAgICAgIHtcbiAgICAgICAgYXR0cmlidXRlOiB0aGlzLmF0dHJpYnV0ZSxcbiAgICAgICAgb246IHRoaXMub24sXG4gICAgICAgIG9mZjogdGhpcy5vZmYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAkJHdpZGdldFR5cGU6ICdhaXMudG9nZ2xlUmVmaW5lbWVudCcsXG4gICAgICB9XG4gICAgKTtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc3RhdGUucmVmaW5lKHRoaXMuc3RhdGUudmFsdWUpO1xuICB9XG59XG4iXX0=