angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
75 lines • 8.67 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectHierarchicalMenu } from 'instantsearch.js/es/connectors';
import { TypedBaseWidget } from '../typed-base-widget';
import { NgAisInstantSearch } from '../instantsearch/instantsearch';
import { NgAisIndex } from '../index-widget/index-widget';
import { parseNumberInput, noop } from '../utils';
export class NgAisHierarchicalMenu extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('HierarchicalMenu');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
this.state = {
createURL: () => '#',
items: [],
refine: noop,
canRefine: false,
isShowingMore: false,
toggleShowMore: noop,
canToggleShowMore: false,
sendEvent: noop,
};
}
get isHidden() {
return this.state.items.length === 0 && this.autoHideContainer;
}
ngOnInit() {
this.createWidget(connectHierarchicalMenu, {
limit: parseNumberInput(this.limit),
attributes: this.attributes,
rootPath: this.rootPath,
separator: this.separator,
showParentLevel: this.showParentLevel,
sortBy: this.sortBy,
transformItems: this.transformItems,
}, {
$$widgetType: 'ais.hierarchicalMenu',
});
super.ngOnInit();
}
}
NgAisHierarchicalMenu.decorators = [
{ type: Component, args: [{
selector: 'ais-hierarchical-menu',
template: `
<div
[class]="cx()"
*ngIf="!isHidden"
>
<ul [class]="cx('list') + ' ' + cx('list', 'lvl0')">
<ais-hierarchical-menu-item
*ngFor="let item of state.items"
[item]="item"
[createURL]="state.createURL"
[refine]="state.refine"
>
</ais-hierarchical-menu-item>
</ul>
</div>
`
},] }
];
NgAisHierarchicalMenu.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisHierarchicalMenu.propDecorators = {
attributes: [{ type: Input }],
separator: [{ type: Input }],
rootPath: [{ type: Input }],
showParentLevel: [{ type: Input }],
limit: [{ type: Input }],
sortBy: [{ type: Input }],
transformItems: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGllcmFyY2hpY2FsLW1lbnUvaGllcmFyY2hpY2FsLW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBcUJsRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFHMUM7SUEyQkMsWUFHUyxXQUF1QixFQUV2QixxQkFBeUM7UUFFaEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFKbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFFdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQXBCM0MsVUFBSyxHQUFnQztZQUMxQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztZQUNwQixLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osU0FBUyxFQUFFLEtBQUs7WUFDaEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsY0FBYyxFQUFFLElBQUk7WUFDcEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBY0YsQ0FBQztJQVpELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDakUsQ0FBQztJQVlNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUNmLHVCQUF1QixFQUN2QjtZQUNFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLEVBQ0Q7WUFDRSxZQUFZLEVBQUUsc0JBQXNCO1NBQ3JDLENBQ0YsQ0FBQztRQUVGLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7WUE3RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZVQ7YUFDRjs7O1lBckJRLFVBQVUsdUJBcURkLE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQ25DLFFBQVE7WUF2REosa0JBQWtCLHVCQXlEdEIsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzs7O3lCQTlCN0MsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSztvQkFFTCxLQUFLO3FCQUNMLEtBQUs7NkJBRUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdCwgZm9yd2FyZFJlZiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29ubmVjdEhpZXJhcmNoaWNhbE1lbnUgfSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMnO1xuaW1wb3J0IHtcbiAgSGllcmFyY2hpY2FsTWVudUNvbm5lY3RvclBhcmFtcyxcbiAgSGllcmFyY2hpY2FsTWVudVdpZGdldERlc2NyaXB0aW9uLFxuICBIaWVyYXJjaGljYWxNZW51UmVuZGVyU3RhdGUsXG59IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvY29ubmVjdG9ycy9oaWVyYXJjaGljYWwtbWVudS9jb25uZWN0SGllcmFyY2hpY2FsTWVudSc7XG5pbXBvcnQgeyBUeXBlZEJhc2VXaWRnZXQgfSBmcm9tICcuLi90eXBlZC1iYXNlLXdpZGdldCc7XG5pbXBvcnQgeyBOZ0Fpc0luc3RhbnRTZWFyY2ggfSBmcm9tICcuLi9pbnN0YW50c2VhcmNoL2luc3RhbnRzZWFyY2gnO1xuaW1wb3J0IHsgTmdBaXNJbmRleCB9IGZyb20gJy4uL2luZGV4LXdpZGdldC9pbmRleC13aWRnZXQnO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXJJbnB1dCwgbm9vcCB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWlzLWhpZXJhcmNoaWNhbC1tZW51JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwiY3goKVwiXG4gICAgICAqbmdJZj1cIiFpc0hpZGRlblwiXG4gICAgPlxuICAgICAgPHVsIFtjbGFzc109XCJjeCgnbGlzdCcpICsgJyAnICsgY3goJ2xpc3QnLCAnbHZsMCcpXCI+XG4gICAgICAgIDxhaXMtaGllcmFyY2hpY2FsLW1lbnUtaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN0YXRlLml0ZW1zXCJcbiAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICBbY3JlYXRlVVJMXT1cInN0YXRlLmNyZWF0ZVVSTFwiXG4gICAgICAgICAgW3JlZmluZV09XCJzdGF0ZS5yZWZpbmVcIlxuICAgICAgICA+XG4gICAgICAgIDwvYWlzLWhpZXJhcmNoaWNhbC1tZW51LWl0ZW0+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc0hpZXJhcmNoaWNhbE1lbnUgZXh0ZW5kcyBUeXBlZEJhc2VXaWRnZXQ8XG4gIEhpZXJhcmNoaWNhbE1lbnVXaWRnZXREZXNjcmlwdGlvbixcbiAgSGllcmFyY2hpY2FsTWVudUNvbm5lY3RvclBhcmFtc1xuPiB7XG4gIEBJbnB1dCgpIHB1YmxpYyBhdHRyaWJ1dGVzOiBIaWVyYXJjaGljYWxNZW51Q29ubmVjdG9yUGFyYW1zWydhdHRyaWJ1dGVzJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXBhcmF0b3I/OiBIaWVyYXJjaGljYWxNZW51Q29ubmVjdG9yUGFyYW1zWydzZXBhcmF0b3InXTtcbiAgQElucHV0KCkgcHVibGljIHJvb3RQYXRoPzogSGllcmFyY2hpY2FsTWVudUNvbm5lY3RvclBhcmFtc1sncm9vdFBhdGgnXTtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dQYXJlbnRMZXZlbD86IEhpZXJhcmNoaWNhbE1lbnVDb25uZWN0b3JQYXJhbXNbJ3Nob3dQYXJlbnRMZXZlbCddO1xuICBASW5wdXQoKSBwdWJsaWMgbGltaXQ/OiBIaWVyYXJjaGljYWxNZW51Q29ubmVjdG9yUGFyYW1zWydsaW1pdCddO1xuICBASW5wdXQoKSBwdWJsaWMgc29ydEJ5PzogSGllcmFyY2hpY2FsTWVudUNvbm5lY3RvclBhcmFtc1snc29ydEJ5J107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRyYW5zZm9ybUl0ZW1zPzogSGllcmFyY2hpY2FsTWVudUNvbm5lY3RvclBhcmFtc1sndHJhbnNmb3JtSXRlbXMnXTtcblxuICBwdWJsaWMgc3RhdGU6IEhpZXJhcmNoaWNhbE1lbnVSZW5kZXJTdGF0ZSA9IHtcbiAgICBjcmVhdGVVUkw6ICgpID0+ICcjJyxcbiAgICBpdGVtczogW10sXG4gICAgcmVmaW5lOiBub29wLFxuICAgIGNhblJlZmluZTogZmFsc2UsXG4gICAgaXNTaG93aW5nTW9yZTogZmFsc2UsXG4gICAgdG9nZ2xlU2hvd01vcmU6IG5vb3AsXG4gICAgY2FuVG9nZ2xlU2hvd01vcmU6IGZhbHNlLFxuICAgIHNlbmRFdmVudDogbm9vcCxcbiAgfTtcblxuICBnZXQgaXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuaXRlbXMubGVuZ3RoID09PSAwICYmIHRoaXMuYXV0b0hpZGVDb250YWluZXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbmRleCkpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50SW5kZXg6IE5nQWlzSW5kZXgsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5zdGFudFNlYXJjaCkpXG4gICAgcHVibGljIGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoXG4gICkge1xuICAgIHN1cGVyKCdIaWVyYXJjaGljYWxNZW51Jyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0SGllcmFyY2hpY2FsTWVudSxcbiAgICAgIHtcbiAgICAgICAgbGltaXQ6IHBhcnNlTnVtYmVySW5wdXQodGhpcy5saW1pdCksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuYXR0cmlidXRlcyxcbiAgICAgICAgcm9vdFBhdGg6IHRoaXMucm9vdFBhdGgsXG4gICAgICAgIHNlcGFyYXRvcjogdGhpcy5zZXBhcmF0b3IsXG4gICAgICAgIHNob3dQYXJlbnRMZXZlbDogdGhpcy5zaG93UGFyZW50TGV2ZWwsXG4gICAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICAgIHRyYW5zZm9ybUl0ZW1zOiB0aGlzLnRyYW5zZm9ybUl0ZW1zLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgJCR3aWRnZXRUeXBlOiAnYWlzLmhpZXJhcmNoaWNhbE1lbnUnLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG4iXX0=