Skip to content

Mention Mentions

Rules

Basic Example

js
const rule = {
    type:"elMention",
    title:"Mention",
    field:"mention",
    value: "hello @Jeremy",
    props: {
      options: [
        {
            label: 'Fuphoenixes',
            value: 'Fuphoenixes',
        },
        {
            label: 'kooriookami',
            value: 'kooriookami',
        },
        {
            label: 'Jeremy',
            value: 'Jeremy',
        },
        {
            label: 'btea',
            value: 'btea',
        },
      ]
    }
}

Props Configuration Examples

Custom Trigger Prefix

js
const rule = {
    type:"elMention",
    title:"@User",
    field:"content",
    value: "",
    props: {
        prefix: '#',
        options: [
            {label: 'Topic 1', value: 'topic1'},
            {label: 'Topic 2', value: 'topic2'},
        ],
        placeholder: "Enter # to mention topic",
    },
}

Remote Load Options

js
const rule = {
    type:"elMention",
    title:"@User",
    field:"content",
    value: "",
    props: {
        prefix: '@',
        options: [],
        loading: false,
        placeholder: "Enter @ to mention user",
    },
    on: {
        search: (query, cb) => {
            // Remote search users
            searchUsers(query).then(res => {
                cb(res.data.map(user => ({
                    label: user.name,
                    value: user.id
                })));
            });
        },
    },
}

Delete Entire Mention

js
const rule = {
    type:"elMention",
    title:"Comment",
    field:"comment",
    value: "",
    props: {
        prefix: '@',
        whole: true,
        options: [
            {label: 'John', value: '1'},
            {label: 'Mary', value: '2'},
        ],
        placeholder: "Enter @ to mention user, backspace to delete entire mention",
    },
}

Events Examples

Listen to Mention Events

js
const rule = {
    type:"elMention",
    title:"Comment",
    field:"comment",
    value: "",
    props: {
        prefix: '@',
        options: [
            {label: 'John', value: '1'},
            {label: 'Mary', value: '2'},
        ],
    },
    on: {
        search: (query, cb) => {
            console.log('Search mention:', query);
            cb([
                {label: query + '1', value: '1'},
                {label: query + '2', value: '2'},
            ]);
        },
        select: (option) => {
            console.log('Select mention:', option);
        },
        change: (value) => {
            console.log('Content changed:', value);
        },
    },
}

Full configuration: Element_Mention

value :String

Props

NameDescriptionTypeDefault Value
optionsList of mention optionsarray[]
prefixPrefix for trigger field. String length must be exactly 1stringarray
splitCharacter used to split mentions. String length must be exactly 1string' '
filterOptionCustom filter option logicfalseFunction
placementSet popup positionstring'bottom'
showArrowWhether dropdown menu content has arrowbooleanfalse
offsetDropdown panel offsetnumber0
wholeWhen backspace is pressed for deletion, whether to delete the mention part as a wholebooleanfalse
checkIsWholeWhen backspace is pressed for deletion, check whether to delete the mention part as a wholeFunction
loadingWhether mention dropdown panel is in loading statebooleanfalse
popperClassCustom popup layer class namestring
popperOptionspopper.js parametersobject refer to popper.js doc
input props

Events

NameDescriptionType
searchTriggered when trigger field is pressedFunction
selectTriggered when user selects optionFunction
input events

Slots

NameDescriptionType
labelCustom label contentobject
loadingCustom loading content
headerContent at top of dropdown list
footerContent at bottom of dropdown list
input slots

FormCreate is an open-source project released under the MIT License. Free for personal and commercial use.