diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js index 875aac331e539f2485694334662649616279eccf..e087b7c3730b08681221f1ee14bd496366acd918 100644 --- a/src/js/utilsDOM.js +++ b/src/js/utilsDOM.js @@ -259,6 +259,34 @@ App.UI.DOM.includeDOM = function(node, uniqueID, tag = "span") { return `<${tag} id='inclDOM${uniqueID}'></${tag}>`; }; +/** + * Concats an array of DOM nodes or strings into a human readable list. + * + * @param {Array<Node|string>} content + * @param {string} [delimiter] + * @param {string} [lastDelimiter] + * @returns {Node|string} + */ +App.UI.DOM.arrayToList = function(content, delimiter = ", ", lastDelimiter = " and ") { + if (content.length === 0) { + return "none"; + } + if (this.length === 1) { + return content[0]; + } + const fragment = document.createDocumentFragment(); + const last = content.pop(); + for (let i = 0; i < content.length; i++) { + fragment.append(content[i]); + if (i < content.length - 1) { + fragment.append(delimiter); + } + } + content.push(last); // don't leave the array modified + fragment.append(lastDelimiter, last); + return fragment; +}; + /** * @param {string} text * @returns {HTMLElement}