1.0.2 • Published 1 year ago

native-emoji-picker v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Vue3 Emoji Picker. Live preview

Test Automation npm version downloads

Installation:

npm install vue3-emoji-picker

// or
yarn add vue3-emoji-picker

Important note: If you're using TypeScript, don't forget to add declare module 'vue3-emoji-picker' in your .d.ts file

Usage:

// import picker compopnent
import EmojiPicker from 'vue3-emoji-picker'

// import css
import 'vue3-emoji-picker/css'
// or import directly:
// import'node_modules/vue3-emoji-picker/dist/style.css'
// use picker component
<EmojiPicker :native="true" @select="onSelectEmoji" />
// event callback
function onSelectEmoji(emoji) {
  console.log(emoji)
  /*
    // result
    { 
        i: "😚", 
        n: ["kissing face"], 
        r: "1f61a", // with skin tone
        t: "neutral", // skin tone
        u: "1f61a" // without tone
    }
    */
}

Options (props)

PropTypeDefault ValueDescription
nativeBooleanfalseLoad native emoji instead of image.
hide-searchBooleantrueShow/hide search input.
hide-group-iconsBooleanfalseShow/hide header group icons.
hide-group-namesBooleanfalseShow/hide group names.
disable-sticky-group-namesBooleanfalseDisable sticky for group names
disable-skin-tonesBooleanfalseDisable skin tones.
disabled-groupsArray[]Disable any group/category. See Available groups
group-namesObject{}Change any group name. See Default group names
static-textsObjectObjectSee static-texts table
pickerTypestring''Choose picker type, possible options: input, textarea (Popup with input/textarea), ''
modestring'insert'Choose insert mode, possible options: prepend, insert, append
offsetNumber'6'Choose emoji popup offset
additional-groupsObject{}Add additional customized groups, keys are the group names translated from snake_case
group-orderArray[]Override ordering of groups
group-iconsObject{}Override group icons by passing svg's on keys
display-recentBooleanfalseDisplay Recently used emojis
themeString'light'Available options, 'light', 'dark', and 'auto'

Static text option (props['static-texts'])

PropTypeDefault ValueDescription
placeholderStringSearch emojiUpdate search input placeholder text.
skinToneStringSkin toneFooter skin tone button text.

Example: :static-texts="{ placeholder: 'Search emoji'}"

Events / Callbacks

@select

This event fires when an emoji gets selected/clicked. Event callback will receive selected emoji in the first argument.

<EmojiPicker @select="onSelectEmoji" />

function onSelectEmoji(emoji) { /* do something */ }

@update:text

This event fires when input text gets changed. Event callback will receive the text in the first argument.

<EmojiPicker @update:text="onChangeText" />

function onChangeText(text) { /* do something */ }

Available groups

[
  "smileys_people",
  "animals_nature",
  "food_drink",
  "activities",
  "travel_places",
  "objects",
  "symbols",
  "flags"
]

Default group names

{
  "smileys_people": "Smiles & People",
  "animals_nature": "Animals & Nature",
  "food_drink": "Food & Drink",
  "activities": "Activities",
  "travel_places": "Travel places",
  "objects": "Objects",
  "symbols": "Symbols",
  "flags": "Flags"
}

Overriding group names

<picker :group-names="{ smileys_people: 'My customized group name' }" />

Overriding group icons

<template>
  <picker :group-icons="{ smileys_people: customSVG }" />
</template>

<script setup>
import customSVG from './path/to/svg'
</script>

Override group order

This will make it so flags is first and then any other non-defined group will follow.

<picker :group-order="['flags']" />

Add additional groups

To see any existing emoji's see src/data/emojis.json

<picker
  :additional-groups="{
    my_custom_group: [
      { n: ['grinning face', 'grinning'], u: '1f600' },
      { n: ['grinning face with smiling eyes', 'grin'], u: '1f601' },
    ],
  }"
  :group-names="{ my_custom_group: 'Frequently used' }"
/>
1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago