npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

textnotdownload

v0.1.1

Published

An angular 2 module to support built-in and custom emoji

Downloads

46

Readme

This is an angular 2 module to support built-in and custom emoji in an angular 2 project.

You can see Live Demo application, or run on local system

Prerequisite

   * Angular-cli: 1.0.0-beta.18 or higher
   * NPM : 4.0.2 or higher
   * Node: v6.9.1 or higher

Installation

npm install ng2-emojify  --save
        or
yarn add ng2-emojify --save

use

Developers can use this module in angular 2 projects for built-in or custom emoji or both. Steps to use :

Put emoji folder into the assets folder

Goto the node_modules/ng2-emojify/emoji in your Angualr 2 Project and Copy/Cut the emoji folder from there and paste this emoji folder to your assets folder inside your Angular 2 project.

Add Ng2EmojifyModule to the module in which your component is declared like this.
import {Ng2EmojifyModule} from 'ng2-emojify';

@NgModule({
 ...
  imports: [
    Ng2EmojifyModule  // like it.
  ],
 ...
})
export class AppModule {
}
Add the following css to your component .css file.
:host >>> .emogi-image {
  height: 60px;
  width: 60px;
  border-radius: 50%;
}

You can customize this css according to your need.

Add emojify pipe to message in your component template. Like it ...
 <div [innerHTML]="message | emojify"></div>

Here message is any message like - I'm so happy today. :happy:. In this message :happy: is an emoji identity. It will be converted to an image tag after passing through emojify pipe.

To use custom emoji

Add CustomEmotion service to your component .ts file.
import {CustomEmotion} from 'ng2-emojify';

...

constructor(private customEmotion: CustomEmotion) {
    /* Mandatory to keep in constructor */
    
    /* ***************************************************************************
     *  @ CustomEmotion
     * `emojiId` - This is the id which will be used to convert into emoji.
     * `emojiUrl` - This is the path to that image/gif which is to be used as emoji.
     * `title` - This is the `title` to be shown as `tooltip`.
     * *************************************************************************** */
     
    this.customEmotion.AddCustomEmotions([
      {
        emojiId: 'myemojiId',
        emojiUrl: 'assets/emoji/my-emoji.jpg',
        title: 'My Emoji'
      }
    ]);
}
...

Here emojiUrl is path to the image which is to be used as emoji. An emoji file may be .jpg, .png and .gif file. assets/emoji/ is default path used by this module. However, you are free to give any full path to your emoji file. Now if you message like this- this is my custom emoji. :myemojiId:. :myemojiId: will be converted into your custom emoji image.

IMPORTANT: Please note if you use "emojiId" that is reserved for the built-in emoji. It will override the built-in

To use emoji menu

There is a tradition to use menu to select an emoji to send as message. Like in Facebook, Twitter, WatsApp and Hangout and so on. ng2-emojify has a built-in support for the same. To use built-in menu support do this...

Add Emotion service to your component .ts file
import {CustomEmotion, Emotion} from 'ng2-emojify';

...

constructor(private customEmotion: CustomEmotion, private emotion: Emotion) {
    /* Mandatory to keep in constructor */
    
    /* ***************************************************************************
     *  @ CustomEmotion
     * `emojiId` - This is the id which will be used to convert into emoji.
     * `emojiUrl` - This is the path to that image/gif which is to be used as emoji.
     * `title` - This is the `title` to be shown as `tooltip`.
     * *************************************************************************** */
     
    this.customEmotion.AddCustomEmotions([
      {
        emojiId: 'myemojiId',
        emojiUrl: 'assets/emoji/my-emoji.jpg',
        title: 'My Emoji'
      }
    ]);


  /* ********************************************************************************
     *  @ Emotion
     * `emojiIdentity` - This is the simple string like `:happy:` or `:smile:` of the
        emoji that has been clicked in the emoji menu.
     * *************************************************************************** */
     
     this.emotion.CaptureEmojiClick().subscribe((emojiIdentity: string) => {
      // write your logic here
    });
}
...

You can write your own logic in CaptureEmojiClick() to add this emojiIdentity to your message string to send directly it in message like in Facebook when emoji is clicked by user. You can write your code to add emoji to your input or textarea like Skype and then can send in message all at once.

Add [emotion-menu] directive and <emoji-menu></emoji-menu> component to your component .template.
 <div [innerHTML]="message | emojify"></div>
 <button [emotion-menu] id="btn">Menu</button>
 <emoji-menu></emoji-menu>

Here, when button is clicked it will display emoji menu with built-in and custom emojis. when an emoji is clicked, its id (emojiIdentity) can be listen in CaptureEmojiClick() in your component constructor. When you click outside emoji menu, it gets closed.

IMPORTANT: Please give a unique id to the HTML element on which you have added the [emotion-menu] directive
To customize emoji-menu css

There are three main HTML tags that constitutes the emoji-menu, two of them are <div> and one <img>. You can write your custom css for all of these. There is one main div that contains whole menu. second div contains the image and third is itself image. To write css for all of these, Youcan write as...

####### make a separate file with extension .ts to contain css You can name it whatever you like. such as custom-emoji-menu-css.ts. It may be surprising to you but soon it will be clear to you later. Now write your css like this in your .ts file.

/* ***********************************************
   * custom css declarations
   * *********************************************** */
   
 export const  emotionCss = {
    customEmotionMenuCss: {
    position: 'fixed',
    'border-radius': '10px 10px 10px 0px',
    width: 520 + 'px',
    height: 200 + 'px',
    'background-color': 'lightblue',
    border: '1px solid blue',
    'z-index': 1,
    'overflow-x': 'hidden'
  },
  customEmotionContainerCss: {
    float: 'left',
    width: 80 + 'px',
    height: 80 + 'px',
    margin: '15px'
  },
  
  customEmotionImageCss: {
    width: '100%',
    height: '100%',
    margin: '0px',
    'border-radius': '50%'
  }
 };

Here customEmotionMenuCss is css for main div that holds the emojis, customEmotionContainerCss is css for the second div inside the main div and customEmotionImageCss is css for the emoji image (img tag) it self.

Now, you have written your custom css. import it in the main component .ts file and use like this...

import {CustomEmotion, Emotion} from 'ng2-emojify';
import {emotionCss} from './custom-emoji-menu-css.ts';

...

customEmotionCss: any;

constructor(private customEmotion: CustomEmotion, private emotion: Emotion) {

    /* initialize the customEmotionCss value */
     this.customEmotionCss = emotionCss;      // <---------------- like this.

    /* ***************************************************************************
     *  @ CustomEmotion
     * `emojiId` - This is the id which will be used to convert into emoji.
     * `emojiUrl` - This is the path to that image/gif which is to be used as emoji.
     * `title` - This is the `title` to be shown as `tooltip`.
     * *************************************************************************** */
     
    this.customEmotion.AddCustomEmotions([
      {
        emojiId: 'myemojiId',
        emojiUrl: 'assets/emoji/my-emoji.jpg',
        title: 'My Emoji'
      }
    ]);


  /* ********************************************************************************
     *  @ Emotion
     * `emojiIdentity` - This is the simple string like `:happy:` or `:smile:` of the
        emoji that has been clicked in the emoji menu.
     * *************************************************************************** */
     
     this.emotion.CaptureEmojiClick().subscribe((emojiIdentity: string) => {
      // write your logic here
    });
}
...

Now you have to provide css to the [emotion-menu] directive in your template file as here...

 <div [innerHTML]="message | emojify"></div>
 <button [emotion-menu] ="customEmotionCss" id="btn">Menu</button>  
 <emoji-menu></emoji-menu>

Congrats

This is all about this module.

Report issues here
Feel free to sent your comments, queries and suggestions at [email protected]

License

MIT