2021-02-08 23:10:21 +00:00
|
|
|
import mustache from 'mustache';
|
|
|
|
import '../resources/skins.vector.styles/LanguageButton.less';
|
|
|
|
import { vectorMenuTemplate } from './MenuDropdown.stories.data';
|
|
|
|
import { languageData } from './LanguageButton.stories.data';
|
|
|
|
|
|
|
|
export default {
|
|
|
|
title: 'LanguageButton'
|
|
|
|
};
|
|
|
|
|
|
|
|
// mw-page-container is needed to enable the 20x20 icon
|
|
|
|
// mw-body-header can be removed when VectorLanguageInHeader is true and
|
|
|
|
// old language inside portal in modern Vector is no longer supported.
|
|
|
|
const CONTAINER_CLASS_MODERN_VECTOR = 'mw-body-header mw-page-container';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* It allows us to support old and new renderings.
|
|
|
|
*
|
|
|
|
* @param {string|HTMLElement} htmlOrElement
|
|
|
|
* @param {string} className of containing element
|
|
|
|
* @return {HTMLElement}
|
|
|
|
*/
|
|
|
|
const wrapLanguageButton = ( htmlOrElement, className ) => {
|
|
|
|
const node = document.createElement( 'div' );
|
|
|
|
node.setAttribute( 'class', className );
|
|
|
|
if ( typeof htmlOrElement === 'string' ) {
|
|
|
|
node.innerHTML = htmlOrElement;
|
|
|
|
} else {
|
|
|
|
node.appendChild( htmlOrElement );
|
|
|
|
}
|
|
|
|
return node;
|
|
|
|
};
|
|
|
|
|
|
|
|
export const languageButton = () => mustache.render( vectorMenuTemplate, languageData );
|
|
|
|
|
|
|
|
export const languageButtonWhenULSEnabled = () => wrapLanguageButton(
|
|
|
|
wrapLanguageButton(
|
|
|
|
wrapLanguageButton(
|
|
|
|
mustache.render( vectorMenuTemplate, languageData ),
|
2021-08-23 22:59:06 +00:00
|
|
|
'vector-menu-hide-dropdown'
|
2021-02-08 23:10:21 +00:00
|
|
|
),
|
|
|
|
CONTAINER_CLASS_MODERN_VECTOR
|
|
|
|
),
|
|
|
|
'client-js'
|
|
|
|
);
|