import { Component, ViewChild, forwardRef, Output, EventEmitter, Input } from '@angular/core'; import { EMOJIS } from "../lib/emojis.data"; import { EmojiListComponent } from "./"; @Component({ selector: 'emoji-content', styles: [`:host{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100vw;height:314px;border-radius:3px;background:#fff;text-align:left;-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media (min-width:258px){:host{width:258px}}emoji-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}`], template: ` ` }) export class EmojiContentComponent { @ViewChild(forwardRef(() => EmojiListComponent)) emojiListComponent: EmojiListComponent; @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); @Input('inputAutofocus') inputAutofocus: boolean; private _emojis = EMOJIS; emojis = this._emojis.slice(); emojisCategories = this._emojis.map(category => Object.assign({}, category, { emojis : [] })); constructor() {} searchHandler(value) { let filteredEmojis = this.emojisCategories.map(category => Object.assign({}, category, { emojis : [] })); value = value.replace(/-/g, '').toLowerCase(); Object.keys(this._emojis).forEach(i => { const category = this._emojis[i]; category.emojis.forEach(emoji => { if (emoji[1].indexOf(value) !== -1) { filteredEmojis[i].emojis.push(emoji); } }); }); this.emojis = filteredEmojis; } categorySelectionHandler(event) { this.emojiListComponent.selectCategory(event); } }