vue3-emoji-picker-ru

2,103 2
Install
npm install vue3-emoji-picker-ru
Latest Version:1.1.11
Vue:3
License:MIT
Last Updated:Aug 20, 2026
Links: GitHub  ·  npm
Maintainer: boombosha

Vue3 Emoji Picker RU / Vue3 Эмодзи Пикер RU. Live preview

Test Automation npm version downloads

A Vue 3 emoji picker component with built-in Russian localization and custom localization support. / Компонент выбора эмодзи для Vue 3 со встроенной русской локализацией и поддержкой кастомной локализации.

Features / Особенности

  • 🎨 Multiple Themes - Light, Dark, Auto themes
  • 🌍 Multi-language Support - Built-in English, Russian + custom localization
  • 🔍 Smart Search - Search emojis in multiple languages
  • 📱 Responsive Design - Works on all devices
  • ⚡ Vue 3 Compatible - Built for Vue 3 Composition API
  • 🎯 Customizable - Extensive customization options
  • 📦 TypeScript Support - Full TypeScript definitions

Installation / Установка:

npm install vue3-emoji-picker-ru

// or
yarn add vue3-emoji-picker-ru

Important note: If you're using TypeScript, don't forget to add type declarations. See vue3-emoji-picker-ru.d.ts for the complete type definitions. Важно: Если вы используете TypeScript, не забудьте добавить декларации типов. См. vue3-emoji-picker-ru.d.ts для полных определений типов.

TypeScript Setup / Настройка TypeScript

Create a types.d.ts file in your project root and add: / Создайте файл types.d.ts в корне вашего проекта и добавьте:

declare module 'vue3-emoji-picker-ru' {
  import { DefineComponent } from 'vue'

  export interface EmojiExt {
    i: string
    n: string[]
    r: string
    t: string
    u: string
  }

  export interface CustomLocaleOptions {
    locale: string
    configPath?: string
    emojisPath?: string
  }

  const EmojiPicker: DefineComponent<any>
  export default EmojiPicker
}

declare module 'vue3-emoji-picker-ru/css' {
  const content: string
  export default content
}

Or copy the complete type definitions from types.d.ts.example / Или скопируйте полные определения типов из types.d.ts.example

Usage / Использование:

// import picker component / импорт компонента пикера
import EmojiPicker from 'vue3-emoji-picker-ru'

// import css / импорт стилей
import 'vue3-emoji-picker-ru/css'
// or import directly: / или импорт напрямую:
// import'node_modules/vue3-emoji-picker-ru/dist/style.css'
// use picker component / использование компонента пикера
<EmojiPicker :native="true" @select="onSelectEmoji" />

// with localization / с локализацией
<EmojiPicker locale="ru" @select="onSelectEmoji" />

// with custom localization / с кастомной локализацией
<EmojiPicker
  locale="my-lang"
  :custom-locale="{
    locale: 'my-lang',
    configPath: '/my-locales/config.json',
    emojisPath: '/my-locales/emojis.json',
  }"
  @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) / Опции (пропсы)

Prop Type Default Value Description
native Boolean false Load native emoji instead of image. / Загружать нативные эмодзи вместо изображений.
emoji-src String Apple CDN Base URL for emoji PNG images (no trailing slash). Example: Google https://cdn.jsdelivr.net/npm/emoji-datasource-google@6.0.1/img/google/64. Reactive. / Базовый URL картинок эмодзи. Реактивный.
hide-search Boolean false Show/hide search input. / Показать/скрыть поле поиска.
hide-group-icons Boolean false Show/hide header group icons. / Показать/скрыть иконки групп в заголовке.
hide-group-names Boolean false Show/hide group names. / Показать/скрыть названия групп.
disable-sticky-group-names Boolean false Disable sticky for group names / Отключить липкие названия групп
disable-skin-tones Boolean false Disable skin tones. / Отключить тона кожи.
disabled-groups Array [] Disable any group/category. See Available groups / Отключить любую группу/категорию. См. Доступные группы
group-names Object {} Change any group name. See Default group names / Изменить любое название группы. См. Названия групп по умолчанию
static-texts Object Object See static-texts table / См. таблицу static-texts
pickerType string '' Choose picker type, possible options: input, textarea (Popup with input/textarea), '' / Выбрать тип пикера, возможные варианты: input, textarea (Всплывающее окно с input/textarea), ''
mode string 'insert' Choose insert mode, possible options: prepend, insert, append / Выбрать режим вставки, возможные варианты: prepend, insert, append
offset Number '6' Choose emoji popup offset / Выбрать отступ всплывающего окна эмодзи
additional-groups Object {} Add additional customized groups, keys are the group names translated from snake_case / Добавить дополнительные настраиваемые группы, ключи - это названия групп, переведенные из snake_case
group-order Array [] Override ordering of groups / Переопределить порядок групп
group-icons Object {} Override group icons by passing svg's on keys / Переопределить иконки групп, передавая SVG по ключам
display-recent Boolean false Display Recently used emojis / Показать недавно использованные эмодзи
theme String 'light' Available options, 'light', 'dark', and 'auto' / Доступные варианты: 'light', 'dark' и 'auto'
locale String 'auto' Language code (en, ru, de, fr, or custom). See Localization
custom-locale Object undefined Custom localization options. See Custom Localization

Static text option (props['static-texts']) / Опция статического текста

Prop Type Default Value Description / Описание
placeholder String Search emoji Update search input placeholder text. / Обновить текст placeholder поля поиска.
skinTone String Skin tone Footer 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",
  "recent": "Recently used"
}

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 / Чтобы увидеть любые существующие эмодзи, см. 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' }"
/>

Localization / Локализация

Built-in Languages / Встроенные языки

<!-- English (default) -->
<picker @select="onSelect" />

<!-- Russian -->
<picker locale="ru" @select="onSelect" />

<!-- German -->
<picker locale="de" @select="onSelect" />

Supported Languages / Поддерживаемые языки

Language Code Status
English en ✅ Built-in
Russian ru ✅ Built-in
German de ✅ External JSON
French fr ✅ External JSON

Custom Localization / Кастомная локализация

You can specify custom paths for localization files: / Вы можете указать кастомные пути для файлов локализации:

<template>
  <picker
    locale="my-lang"
    :custom-locale="customLocaleOptions"
    @select="onSelect"
  />
</template>

<script setup lang="ts">
import { ref } from 'vue'
import type { CustomLocaleOptions } from 'vue3-emoji-picker-ru'

const customLocaleOptions: CustomLocaleOptions = {
  locale: 'my-lang',
  configPath: '/my-locales/config.json', // Path to config file / Путь к файлу конфигурации
  emojisPath: '/my-locales/emojis.json', // Path to emojis file / Путь к файлу эмодзи
}

function onSelect(emoji: any) {
  console.log('Selected emoji:', emoji)
}
</script>

Localization Files Structure / Структура файлов локализации

1. Configuration File / Файл конфигурации

Create a config file (e.g., /my-locales/config.json):

{
  "locale": "my-lang",
  "groupNames": {
    "recent": "Recently used",
    "smileys_people": "Smiles & People",
    "animals_nature": "Animals & Nature",
    "food_drink": "Food & Drink",
    "activities": "Activities",
    "travel_places": "Travel places",
    "objects": "Objects",
    "symbols": "Symbols",
    "flags": "Flags"
  },
  "staticTexts": {
    "placeholder": "Search emoji",
    "skinTone": "Skin tone",
    "noResults": "No emoji found!"
  }
}
2. Emojis Translation File / Файл переводов смайлов

Create an emojis file (e.g., /my-locales/emojis.json):

{
  "smileys_people": [
    {
      "n": ["grinning face", "grinning", "улыбающееся лицо", "улыбка"],
      "u": "1f600"
    },
    {
      "n": ["dog face", "dog", "собачья морда", "собака"],
      "u": "1f436"
    }
  ]
}

New Props / Новые пропсы

Prop Type Description
locale String Language code (en, ru, de, fr, or custom)
custom-locale Object Custom localization options

Custom Locale Options / Опции кастомной локализации

interface CustomLocaleOptions {
  locale: string // Language code
  configPath?: string // Path to config file
  emojisPath?: string // Path to emojis file
}

Examples / Примеры

CDN Localization / Локализация с CDN
<picker
  locale="es"
  :custom-locale="{
    locale: 'es',
    configPath: 'https://cdn.example.com/locales/es/config.json',
    emojisPath: 'https://cdn.example.com/locales/es/emojis.json',
  }"
  @select="onSelect"
/>
API Localization / Локализация через API
<picker
  locale="dynamic"
  :custom-locale="{
    locale: 'dynamic',
    configPath: '/api/locales/config',
    emojisPath: '/api/locales/emojis',
  }"
  @select="onSelect"
/>
Local Files / Локальные файлы
<picker
  locale="custom"
  :custom-locale="{
    locale: 'custom',
    configPath: '/assets/locales/my-lang/config.json',
    emojisPath: '/assets/locales/my-lang/emojis.json',
  }"
  @select="onSelect"
/>

Search in Multiple Languages / Поиск на нескольких языках

The search works across all languages in the emoji names array:

// English search
'smile' // finds 😊

// Russian search
'улыбка' // finds 😊

// Any language
'смайл' // finds 😊

Fallback System / Система отката

  • If custom files are not found, falls back to English / Если кастомные файлы не найдены, откатывается на английский
  • If built-in locale is not available, falls back to English / Если встроенная локаль недоступна, откатывается на английский
  • Console warnings for debugging / Предупреждения в консоли для отладки

Migration / Миграция

No migration needed for existing code. New functionality is additive: / Миграция не требуется для существующего кода. Новая функциональность является дополнительной:

Before / До:

<picker locale="de" />

After (optional) / После (опционально):

<picker
  locale="de"
  :custom-locale="{ locale: 'de', configPath: '/custom/de.json' }"
/>

For detailed documentation, see CUSTOM_LOCALIZATION.md / Для подробной документации см. CUSTOM_LOCALIZATION.md

Related Packages

Version History

Version Released Vue License
1.1.11 ^3.2.23 MIT
1.1.10 ^3.2.23 MIT
1.1.9 ^3.2.23 MIT
1.1.8 ^3.2.23 MIT