DevExtreme v23.2 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Mentions

Our HtmlEditor allows end-users to insert "mentions" and reference others within text or conversation threads as demonstrated in this demo. With this feature, you can introduce functionality that emulates capabilities found in collaboration tools like Microsoft Teams.

A "mention" is triggered by a marker. You are free to choose a "marker" of your choice (this demo uses the @ symbol to trigger a "mention"). User names are stored as items in a dataSource. Data can be retrieved from multiple data sources. When using multiple data sources, you must assign an unique marker to each.

To "mention" a user, simply enter the @ symbol and select the desired record from the "Mentions" drop-down user list. Like today's most popular collaboration tools, you can enter additional characters to filter the records displayed within the "Mentions" drop-down user list.

Backend API
$(() => { $('#html-editor').dxHtmlEditor({ mentions: [{ dataSource: employees, searchExpr: 'text', displayExpr: 'text', valueExpr: 'text', }], }); });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/23.2.5/css/dx.light.css" /> <script src="https://unpkg.com/devextreme-quill@1.6.4/dist/dx-quill.min.js"></script> <script src="js/dx.all.js"></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="chat-window"> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="Kevin Carter" src="images/mentions/Kevin-Carter.png" /> </div> <div class="name"> Kevin Carter </div> <div class="date"> 07/03/19 - 12:22AM </div> <div class="text"> <span class="dx-mention" spellcheck="false" ><span><span>@</span>John Heart</span></span > What experience do you have in this field? </div> </div> <br /> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="John Heart" src="images/mentions/John-Heart.png" /> </div> <div class="name"> John Heart </div> <div class="date"> 07/03/19 - 12:25AM </div> <div class="text"> I've been in the audio/video industry since 2001, and I've been the CEO of DevAv since 2009. </div> </div> <br /> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="Kevin Carter" src="images/mentions/Kevin-Carter.png" /> </div> <div class="name"> Kevin Carter </div> <div class="date"> 07/03/19 - 12:26AM </div> <div class="text"> That's very interesting. <span class="dx-mention" spellcheck="false" ><span><span>@</span>Olivia Peyton</span></span >, what do you think? </div> </div> </div> <div id="html-editor"> <p> <span class="dx-mention" spellcheck="false" data-marker="@" data-mention-value="Kevin Carter" ><span><span>@</span>Kevin Carter</span></span > I think John's expertise can be very valuable in our startup. </p> </div> </div> </body> </html>
#chat-window { background-color: rgba(191, 191, 191, 0.15); height: 350px; padding: 10px; } #html-editor { height: 100px; } #send { float: right; margin: 10px 0; } .message { height: 85px; background-color: inherit; display: inline-block; max-width: 60%; border-radius: 5px; margin: 5px; padding: 10px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .name { font-weight: bold; } .date { opacity: 0.5; } .photo { float: left; height: 100%; } .photo > img { width: 40px; height: 40px; display: block; border-radius: 40px; margin-right: 10px; }
const employees = [{ text: 'John Heart', team: 'Engineering', icon: '../../../../images/mentions/John-Heart.png', }, { text: 'Kevin Carter', team: 'Engineering', icon: '../../../../images/mentions/Kevin-Carter.png', }, { text: 'Olivia Peyton', team: 'Management', icon: '../../../../images/mentions/Olivia-Peyton.png', }, { text: 'Robert Reagan', team: 'Management', icon: '../../../../images/mentions/Robert-Reagan.png', }, { text: 'Cynthia Stanwick', team: 'Engineering', icon: '../../../../images/mentions/Cynthia-Stanwick.png', }, { text: 'Brett Wade ', team: 'Analysis', icon: '../../../../images/mentions/Brett-Wade.png', }, { text: 'Greta Sims', team: 'QA', icon: '../../../../images/mentions/Greta-Sims.png', }];