Home
Softono
vue-mention

vue-mention

Open source MIT Vue
556
Stars
60
Forks
50
Issues
3
Watchers
3 years
Last Commit

About vue-mention

<p align="center"> <a href="https://vue-mention.netlify.app/" target="_blank"> <img src="./packages/docs/src/.vuepress/public/vue-mention.svg" alt="logo" width="128"> </a> </p> <p align="center"> <a href="https://www.npmjs.com/package/vue-mention"> <img src="https://img.shields.io/npm/v/vue-mention.svg" alt="Version"> </a> <a href="https://www.npmjs.com/package/vue-mention"> <img src="https://img.shields.io/npm/dm/vue-mention.svg" alt="Downloads"> </a> </p> # vue-mention Mention popper for input and textarea [Documentation](https://vue-mention.netlify.app/) ## Vue 3 support Install the v2 for Vue 3 support: ``` pnpm i vue-mention@next ``` You also need to install `floating-vue`: ``` pnpm i floating-vue ``` And add the default `floating-vue` styles: ```js import 'floating-vue/dist/style.css' ``` ## floating-vue 1 (Vue 2) Install the special version for floating-vue v1 (for Vue 2) support: ``` pnpm i [email protected] ``` **:warning: Use the exact version ran ...

Platforms

Web Self-hosted

Languages

Vue

logo

Version Downloads

vue-mention

Mention popper for input and textarea

Documentation

Vue 3 support

Install the v2 for Vue 3 support:

pnpm i vue-mention@next

You also need to install floating-vue:

pnpm i floating-vue

And add the default floating-vue styles:

import 'floating-vue/dist/style.css'

floating-vue 1 (Vue 2)

Install the special version for floating-vue v1 (for Vue 2) support:

pnpm i [email protected]

:warning: Use the exact version range 1.0.0-floating-vue1 otherwise you'll install v1.1.0 which is for v-tooltip 2.

You also need to install floating-vue v1:

pnpm i floating-vue@vue2

And add the default floating-vue styles:

import 'floating-vue/dist/style.css'

Sponsors

Quick start

<script>
import { Mentionable } from 'vue-mention'

const users = [
  {
    value: 'akryum',
    firstName: 'Guillaume',
  },
  {
    value: 'posva',
    firstName: 'Eduardo',
  },
  {
    value: 'atinux',
    firstName: 'Sébastien',
  },
]

const issues = [
  {
    value: 123,
    label: 'Error with foo bar',
    searchText: 'foo bar'
  },
  {
    value: 42,
    label: 'Cannot read line',
    searchText: 'foo bar line'
  },
  {
    value: 77,
    label: 'I have a feature suggestion',
    searchText: 'feature'
  }
]

export default {
  components: {
    Mentionable,
  },

  data () {
    return {
      text: '',
      items: [],
    }
  },

  methods: {
    onOpen (key) {
      this.items = key === '@' ? users : issues
    },
  },
}
</script>

<template>
  <Mentionable
    :keys="['@', '#']"
    :items="items"
    offset="6"
    insert-space
    @open="onOpen"
  >
    <textarea
      v-model="text"
    />

    <template #no-result>
      <div class="dim">
        No result
      </div>
    </template>

    <template #item-@="{ item }">
      <div class="user">
        {{ item.value }}
        <span class="dim">
          ({{ item.firstName }})
        </span>
      </div>
    </template>

    <template #item-#="{ item }">
      <div class="issue">
        <span class="number">
          #{{ item.value }}
        </span>
        <span class="dim">
          {{ item.label }}
        </span>
      </div>
    </template>
  </Mentionable>
</template>