mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
[ticket/13713] Add jsdoc docblocks to Mentions
PHPBB3-13713
This commit is contained in:
parent
d5c9508aed
commit
8083846850
1 changed files with 41 additions and 3 deletions
|
@ -385,6 +385,22 @@ function getCaretPosition(txtarea) {
|
|||
}
|
||||
|
||||
(function($) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Mentions data returned from ajax requests
|
||||
* @typedef {Object} MentionsData
|
||||
* @property {string} name User/group name
|
||||
* @property {string} id User/group ID
|
||||
* @property {{img: string, group: string}} avatar Avatar data
|
||||
* @property {string} rank User rank or empty string for groups
|
||||
* @property {number} priority Priority of data entry
|
||||
*/
|
||||
|
||||
/**
|
||||
* Mentions class
|
||||
* @constructor
|
||||
*/
|
||||
function Mentions() {
|
||||
let $mentionDataContainer = $('[data-mention-url]:first');
|
||||
let mentionURL = $mentionDataContainer.data('mentionUrl');
|
||||
|
@ -396,10 +412,20 @@ function getCaretPosition(txtarea) {
|
|||
let cachedAll = [];
|
||||
let cachedSearchKey = 'name';
|
||||
|
||||
/**
|
||||
* Get default avatar
|
||||
* @param {string} type Type of avatar; either group or user on any other value
|
||||
* @returns {string} Default avatar svg code
|
||||
*/
|
||||
function defaultAvatar(type) {
|
||||
return (type === 'group') ? '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>' : '<svg class="mention-media-avatar" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill-rule="evenodd" d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"/></svg>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cached keyword for query string
|
||||
* @param {string} query Query string
|
||||
* @returns {?string} Cached keyword if one fits query, else empty string if cached keywords exist, null if cached keywords do not exist
|
||||
*/
|
||||
function getCachedKeyword(query) {
|
||||
if (!cachedNames) {
|
||||
return null;
|
||||
|
@ -417,6 +443,13 @@ function getCaretPosition(txtarea) {
|
|||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get names matching query
|
||||
* @param {string} query Query string
|
||||
* @param {Object.<number, MentionsData>} items List of {@link MentionsData} items
|
||||
* @param {string} searchKey Key to use for matching items
|
||||
* @returns {Object.<number, MentionsData>} List of {@link MentionsData} items filtered with query and by searchKey
|
||||
*/
|
||||
function getMatchedNames(query, items, searchKey) {
|
||||
let i;
|
||||
let len;
|
||||
|
@ -430,6 +463,11 @@ function getCaretPosition(txtarea) {
|
|||
return _results;
|
||||
}
|
||||
|
||||
/**
|
||||
* atwho.js remoteFilter callback filter function
|
||||
* @param {string} query Query string
|
||||
* @param {function} callback Callback function for filtered items
|
||||
*/
|
||||
function remoteFilter(query, callback) {
|
||||
/*
|
||||
* Do not make a new request until the previous one for the same query is returned
|
||||
|
@ -448,7 +486,7 @@ function getCaretPosition(txtarea) {
|
|||
/*
|
||||
* Use cached values when we can:
|
||||
* 1) There are some names in the cache relevant for the query
|
||||
* (cache for the query with the same first characters cointains some data)
|
||||
* (cache for the query with the same first characters contains some data)
|
||||
* 2) We have enough names to display OR
|
||||
* all relevant names have been fetched from the server
|
||||
*/
|
||||
|
@ -475,8 +513,8 @@ function getCaretPosition(txtarea) {
|
|||
return $mentionDataContainer.length;
|
||||
};
|
||||
|
||||
this.handle = function(txtarea) {
|
||||
$(txtarea).atwho({
|
||||
this.handle = function(textarea) {
|
||||
$(textarea).atwho({
|
||||
at: "@",
|
||||
acceptSpaceBar: true,
|
||||
displayTpl: function(data) {
|
||||
|
|
Loading…
Add table
Reference in a new issue