@neocomplexx/ngx-neo-completer
Version:
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.
65 lines • 8.11 kB
JavaScript
'use strict';
import { __decorate, __metadata } from "tslib";
import { Component, Input } from '@angular/core';
let CompleterListItemCmp =
// tslint:disable-next-line:component-class-suffix
class CompleterListItemCmp {
constructor() {
this.parts = [];
}
ngOnInit() {
if (!this.searchStr) {
this.parts.push({ isMatch: false, text: this.text });
return;
}
const matchStr = this.text.toLowerCase();
let matchPos = matchStr.indexOf(this.searchStr.toLowerCase());
let startIndex = 0;
while (matchPos >= 0) {
const matchText = this.text.slice(matchPos, matchPos + this.searchStr.length);
if (matchPos === 0) {
this.parts.push({ isMatch: true, text: matchText });
startIndex += this.searchStr.length;
}
else if (matchPos > 0) {
const matchPart = this.text.slice(startIndex, matchPos);
this.parts.push({ isMatch: false, text: matchPart });
this.parts.push({ isMatch: true, text: matchText });
startIndex += this.searchStr.length + matchPart.length;
}
matchPos = matchStr.indexOf(this.searchStr.toLowerCase(), startIndex);
}
if (startIndex < this.text.length) {
this.parts.push({ isMatch: false, text: this.text.slice(startIndex, this.text.length) });
}
}
};
__decorate([
Input(),
__metadata("design:type", String)
], CompleterListItemCmp.prototype, "text", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], CompleterListItemCmp.prototype, "searchStr", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], CompleterListItemCmp.prototype, "matchClass", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], CompleterListItemCmp.prototype, "type", void 0);
CompleterListItemCmp = __decorate([
Component({
// tslint:disable-next-line:component-selector
selector: 'completer-list-item',
// tslint:disable-next-line:max-line-length
template: `<span class="completer-list-item-holder" [ngClass]="{'completer-title': type === 'title', 'completer-description': type === 'description'}" >
<span class="completer-list-item" *ngFor="let part of parts" [ngClass]="part.isMatch ? matchClass : null">{{part.text}}</span>
</span>`
})
// tslint:disable-next-line:component-class-suffix
], CompleterListItemCmp);
export { CompleterListItemCmp };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGVyLWxpc3QtaXRlbS1jbXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1jb21wbGV0ZXIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jb21wbGV0ZXItbGlzdC1pdGVtLWNtcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBQ2IsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpQmhELElBQWEsb0JBQW9CO0FBRGpDLGtEQUFrRDtBQUNsRCxNQUFhLG9CQUFvQjtJQUFqQztRQU1XLFVBQUssR0FBZ0IsRUFBRSxDQUFDO0lBMEJuQyxDQUFDO0lBekJVLFFBQVE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE9BQU87U0FDVjtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sUUFBUSxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUUsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQzthQUN2QztpQkFBTSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQzFEO1lBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUN6RTtRQUNELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzdGO0lBQ0wsQ0FBQztDQUNKLENBQUE7QUEvQlk7SUFBUixLQUFLLEVBQUU7O2tEQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7dURBQTBCO0FBQ3pCO0lBQVIsS0FBSyxFQUFFOzt3REFBMkI7QUFDMUI7SUFBUixLQUFLLEVBQUU7O2tEQUFxQjtBQUpwQixvQkFBb0I7SUFUaEMsU0FBUyxDQUFDO1FBQ1AsOENBQThDO1FBQzlDLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsMkNBQTJDO1FBQzNDLFFBQVEsRUFBRTs7Z0JBRUU7S0FDZixDQUFDO0lBQ0Ysa0RBQWtEO0dBQ3JDLG9CQUFvQixDQWdDaEM7U0FoQ1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuaW1wb3J0IHtDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaFBhcnQge1xuICAgIGlzTWF0Y2g6IGJvb2xlYW47XG4gICAgdGV4dDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdjb21wbGV0ZXItbGlzdC1pdGVtJyxcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgdGVtcGxhdGU6IGA8c3BhbiBjbGFzcz1cImNvbXBsZXRlci1saXN0LWl0ZW0taG9sZGVyXCIgW25nQ2xhc3NdPVwieydjb21wbGV0ZXItdGl0bGUnOiB0eXBlID09PSAndGl0bGUnLCAnY29tcGxldGVyLWRlc2NyaXB0aW9uJzogdHlwZSA9PT0gJ2Rlc2NyaXB0aW9uJ31cIiA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGxldGVyLWxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBwYXJ0IG9mIHBhcnRzXCIgW25nQ2xhc3NdPVwicGFydC5pc01hdGNoID8gbWF0Y2hDbGFzcyA6IG51bGxcIj57e3BhcnQudGV4dH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+YFxufSlcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgQ29tcGxldGVyTGlzdEl0ZW1DbXAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNlYXJjaFN0cjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXRjaENsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHR5cGU6IHN0cmluZztcblxuICAgIHB1YmxpYyBwYXJ0czogTWF0Y2hQYXJ0W10gPSBbXTtcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdHIpIHtcbiAgICAgICAgICAgIHRoaXMucGFydHMucHVzaCh7IGlzTWF0Y2g6IGZhbHNlLCB0ZXh0OiB0aGlzLnRleHQgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hTdHIgPSB0aGlzLnRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IG1hdGNoUG9zID0gbWF0Y2hTdHIuaW5kZXhPZih0aGlzLnNlYXJjaFN0ci50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAobWF0Y2hQb3MgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hUZXh0ID0gdGhpcy50ZXh0LnNsaWNlKG1hdGNoUG9zLCBtYXRjaFBvcyArIHRoaXMuc2VhcmNoU3RyLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAobWF0Y2hQb3MgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRzLnB1c2goeyBpc01hdGNoOiB0cnVlLCB0ZXh0OiBtYXRjaFRleHQgfSk7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSB0aGlzLnNlYXJjaFN0ci5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoUG9zID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoUGFydCA9IHRoaXMudGV4dC5zbGljZShzdGFydEluZGV4LCBtYXRjaFBvcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJ0cy5wdXNoKHsgaXNNYXRjaDogZmFsc2UsIHRleHQ6IG1hdGNoUGFydCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRzLnB1c2goeyBpc01hdGNoOiB0cnVlLCB0ZXh0OiBtYXRjaFRleHQgfSk7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSB0aGlzLnNlYXJjaFN0ci5sZW5ndGggKyBtYXRjaFBhcnQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF0Y2hQb3MgPSBtYXRjaFN0ci5pbmRleE9mKHRoaXMuc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCksIHN0YXJ0SW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydEluZGV4IDwgdGhpcy50ZXh0Lmxlbmd0aCkge1xuICAgICAgICAgICAgIHRoaXMucGFydHMucHVzaCh7IGlzTWF0Y2g6IGZhbHNlLCB0ZXh0OiB0aGlzLnRleHQuc2xpY2Uoc3RhcnRJbmRleCwgdGhpcy50ZXh0Lmxlbmd0aCkgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=