/** * @external MenuDefinition */ /** * @param {string} msg * @param {number} [height=200] * @return {string} */ const placeholder = ( msg, height ) => { return `
${msg}
`; }; /** * @param {string} html * @return {string} */ const portletAfter = ( html ) => { return `
${html}
`; }; const htmlUserLanguageAttributes = `dir="ltr" lang="en-GB"`; /** * @param {string} [additionalClassString] to add to the menu class * @return {Object} */ function helperClassName( additionalClassString = '' ) { return { class: additionalClassString }; } /** * @param {string} name of the menu * @param {string} htmlItems * @param {Object} [additionalData] to add to the menu template data * @param {string} [additionalData.class] * @return {MenuDefinition} */ function helperMakeMenuData( name, htmlItems, additionalData = {} ) { let label; switch ( name ) { case 'personal': label = 'Personal tools'; break; default: label = 'Menu label'; break; } // Handle "class" property separately to ensure it is appended to existing classes const additionalClassString = additionalData.class; const additionalDataWithoutClass = Object.assign( {}, additionalData ); delete additionalDataWithoutClass.class; return Object.assign( { id: `p-${name}`, class: `mw-portlet mw-portlet-${name} vector-menu ${additionalClassString}`, label, 'html-user-language-attributes': htmlUserLanguageAttributes, 'html-items': htmlItems }, additionalDataWithoutClass ); } export { placeholder, htmlUserLanguageAttributes, portletAfter, helperClassName, helperMakeMenuData };