UNPKG

angular-instantsearch

Version:

Lightning-fast search for Angular apps, by Algolia.

70 lines (69 loc) 6.8 kB
import { Component, Input } from '@angular/core'; import { bem } from '../utils'; export class NgAisHierarchicalMenuItem { constructor() { this.lvl = 1; this.cx = bem('HierarchicalMenu'); } getItemClass(item) { let className = this.cx('item'); if (item.isRefined) { className = `${className} ${this.cx('item', 'selected')}`; } if (this.isArray(item.data) && item.data.length > 0) { className = `${className} ${this.cx('item', 'parent')}`; } return className; } getListClass() { return `${this.cx('list')} ${this.cx('list', 'child')} ${this.cx('list', `lvl${this.lvl}`)}`; } isArray(potentialArray) { return Array.isArray(potentialArray); } handleClick(event, item) { event.preventDefault(); event.stopPropagation(); this.refine(item.value); } } NgAisHierarchicalMenuItem.decorators = [ { type: Component, args: [{ selector: 'ais-hierarchical-menu-item', template: ` <li [class]="getItemClass(item)" (click)="handleClick($event, item)" > <a [class]="cx('link')" href="{{createURL(item.value)}}" (click)="handleClick($event, item)" > <span [class]="cx('label')">{{item.label}}</span> <span [class]="cx('count')">{{item.count}}</span> </a> <ul [class]="getListClass()" *ngIf="item.isRefined && isArray(item.data) && item.data.length > 0" > <ais-hierarchical-menu-item *ngFor="let child of item.data" [item]="child" [createURL]="createURL" [refine]="refine" [lvl]="lvl + 1" > </ais-hierarchical-menu-item> </ul> </li> ` },] } ]; NgAisHierarchicalMenuItem.propDecorators = { lvl: [{ type: Input }], refine: [{ type: Input }], createURL: [{ type: Input }], item: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLW1lbnUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oaWVyYXJjaGljYWwtbWVudS9oaWVyYXJjaGljYWwtbWVudS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFzQy9CLE1BQU0sT0FBTyx5QkFBeUI7SUFoQ3RDO1FBaUNrQixRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBS3pCLE9BQUUsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQWlDdEMsQ0FBQztJQS9CUSxZQUFZLENBQUMsSUFBSTtRQUN0QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixTQUFTLEdBQUcsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztTQUMzRDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELFNBQVMsR0FBRyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1NBQ3pEO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FDOUQsTUFBTSxFQUNOLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUNqQixFQUFFLENBQUM7SUFDTixDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQW1CO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWlCLEVBQUUsSUFBMEI7UUFDOUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7WUF0RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDthQUNGOzs7a0JBRUUsS0FBSztxQkFDTCxLQUFLO3dCQUNMLEtBQUs7bUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGJlbSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIEhpZXJhcmNoaWNhbE1lbnVSZW5kZXJTdGF0ZSxcbiAgSGllcmFyY2hpY2FsTWVudUl0ZW0sXG59IGZyb20gJ2luc3RhbnRzZWFyY2guanMvZXMvY29ubmVjdG9ycy9oaWVyYXJjaGljYWwtbWVudS9jb25uZWN0SGllcmFyY2hpY2FsTWVudSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fpcy1oaWVyYXJjaGljYWwtbWVudS1pdGVtJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bGlcbiAgICAgIFtjbGFzc109XCJnZXRJdGVtQ2xhc3MoaXRlbSlcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgID5cbiAgICAgIDxhXG4gICAgICAgIFtjbGFzc109XCJjeCgnbGluaycpXCJcbiAgICAgICAgaHJlZj1cInt7Y3JlYXRlVVJMKGl0ZW0udmFsdWUpfX1cIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJjeCgnbGFiZWwnKVwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY3goJ2NvdW50JylcIj57e2l0ZW0uY291bnR9fTwvc3Bhbj5cbiAgICAgIDwvYT5cblxuICAgICAgPHVsXG4gICAgICAgIFtjbGFzc109XCJnZXRMaXN0Q2xhc3MoKVwiXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pc1JlZmluZWQgJiYgaXNBcnJheShpdGVtLmRhdGEpICYmIGl0ZW0uZGF0YS5sZW5ndGggPiAwXCJcbiAgICAgID5cbiAgICAgICAgPGFpcy1oaWVyYXJjaGljYWwtbWVudS1pdGVtXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uZGF0YVwiXG4gICAgICAgICAgW2l0ZW1dPVwiY2hpbGRcIlxuICAgICAgICAgIFtjcmVhdGVVUkxdPVwiY3JlYXRlVVJMXCJcbiAgICAgICAgICBbcmVmaW5lXT1cInJlZmluZVwiXG4gICAgICAgICAgW2x2bF09XCJsdmwgKyAxXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Fpcy1oaWVyYXJjaGljYWwtbWVudS1pdGVtPlxuICAgICAgPC91bD5cbiAgICA8L2xpPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Fpc0hpZXJhcmNoaWNhbE1lbnVJdGVtIHtcbiAgQElucHV0KCkgcHVibGljIGx2bDogbnVtYmVyID0gMTtcbiAgQElucHV0KCkgcHVibGljIHJlZmluZTogSGllcmFyY2hpY2FsTWVudVJlbmRlclN0YXRlWydyZWZpbmUnXTtcbiAgQElucHV0KCkgcHVibGljIGNyZWF0ZVVSTDogSGllcmFyY2hpY2FsTWVudVJlbmRlclN0YXRlWydjcmVhdGVVUkwnXTtcbiAgQElucHV0KCkgcHVibGljIGl0ZW06IEhpZXJhcmNoaWNhbE1lbnVJdGVtO1xuXG4gIHB1YmxpYyBjeCA9IGJlbSgnSGllcmFyY2hpY2FsTWVudScpO1xuXG4gIHB1YmxpYyBnZXRJdGVtQ2xhc3MoaXRlbSk6IHN0cmluZyB7XG4gICAgbGV0IGNsYXNzTmFtZSA9IHRoaXMuY3goJ2l0ZW0nKTtcblxuICAgIGlmIChpdGVtLmlzUmVmaW5lZCkge1xuICAgICAgY2xhc3NOYW1lID0gYCR7Y2xhc3NOYW1lfSAke3RoaXMuY3goJ2l0ZW0nLCAnc2VsZWN0ZWQnKX1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQXJyYXkoaXRlbS5kYXRhKSAmJiBpdGVtLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY2xhc3NOYW1lID0gYCR7Y2xhc3NOYW1lfSAke3RoaXMuY3goJ2l0ZW0nLCAncGFyZW50Jyl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmN4KCdsaXN0Jyl9ICR7dGhpcy5jeCgnbGlzdCcsICdjaGlsZCcpfSAke3RoaXMuY3goXG4gICAgICAnbGlzdCcsXG4gICAgICBgbHZsJHt0aGlzLmx2bH1gXG4gICAgKX1gO1xuICB9XG5cbiAgcHVibGljIGlzQXJyYXkocG90ZW50aWFsQXJyYXk6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBvdGVudGlhbEFycmF5KTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogSGllcmFyY2hpY2FsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5yZWZpbmUoaXRlbS52YWx1ZSk7XG4gIH1cbn1cbiJdfQ==