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.