107 lines
2.5 KiB
JavaScript
107 lines
2.5 KiB
JavaScript
/*global define*/
|
|
define(
|
|
[ 'util/dom', 'util/localizeText' ],
|
|
function ( domHelper, loc ) {
|
|
var svgEls = [ 'g', 'svg', 'rect' ];
|
|
var svgNameSpace = 'http://www.w3.org/2000/svg';
|
|
|
|
function createEl ( elementStr, cssClasses, parentEl ) {
|
|
var hasNameSpace = svgEls.indexOf( elementStr ) !== -1;
|
|
var el = hasNameSpace ? document.createElementNS( svgNameSpace, elementStr ) : document.createElement( elementStr );
|
|
|
|
if ( hasNameSpace ) {
|
|
document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );
|
|
}
|
|
|
|
cssClasses = typeof cssClasses === 'string' ? [ ].concat( cssClasses.split( ' ' ) ) : cssClasses;
|
|
|
|
if ( Array.isArray( cssClasses ) ) {
|
|
cssClasses.forEach( function ( cssClass ) {
|
|
el.classList.add( cssClass );
|
|
} );
|
|
}
|
|
|
|
if ( parentEl && parentEl.appendChild ) {
|
|
parentEl.appendChild( el );
|
|
}
|
|
|
|
return el;
|
|
}
|
|
|
|
function createButton ( content, title, cssClasses, parentEl, onClick ) {
|
|
var btnEl = createEl( 'button', cssClasses, parentEl );
|
|
|
|
if ( typeof content === 'string' ) {
|
|
// btnEl.textContent = content;
|
|
loc( btnEl, 'textContent', content );
|
|
} else {
|
|
if ( domHelper.isElement( content ) ) {
|
|
btnEl.appendChild( content );
|
|
}
|
|
}
|
|
|
|
// btnEl.title = title;
|
|
loc( btnEl, 'title', title );
|
|
|
|
if ( typeof onClick === 'function' ) {
|
|
btnEl.addEventListener( 'click', onClick );
|
|
}
|
|
|
|
return btnEl;
|
|
}
|
|
|
|
function createLink ( content, title, href, target, cssClasses, parentEl ) {
|
|
var linkEl = createEl( 'a', cssClasses, parentEl );
|
|
|
|
if ( typeof content === 'string' ) {
|
|
// linkEl.textContent = content;
|
|
loc( linkEl, 'textContent', content );
|
|
} else {
|
|
if ( domHelper.isElement( content ) ) {
|
|
linkEl.appendChild( content );
|
|
}
|
|
}
|
|
|
|
if ( title ) {
|
|
// linkEl.title = title;
|
|
loc( linkEl, 'title', title );
|
|
}
|
|
|
|
if ( href ) {
|
|
linkEl.href = href;
|
|
}
|
|
|
|
if ( target ) {
|
|
linkEl.target = target;
|
|
}
|
|
|
|
return linkEl;
|
|
}
|
|
|
|
function createLabel ( content, forId, cssClasses, parentEl ) {
|
|
var labelEl = createEl( 'label', cssClasses, parentEl );
|
|
|
|
if ( typeof content === 'string' ) {
|
|
// labelEl.textContent = content;
|
|
loc( labelEl, 'textContent', content );
|
|
} else {
|
|
if ( domHelper.isElement( content ) ) {
|
|
labelEl.appendChild( content );
|
|
}
|
|
}
|
|
|
|
if ( forId ) {
|
|
labelEl.setAttribute( 'for', forId );
|
|
}
|
|
|
|
return labelEl;
|
|
}
|
|
|
|
return {
|
|
createEl: createEl,
|
|
createButton: createButton,
|
|
createLink: createLink,
|
|
createLabel: createLabel
|
|
}
|
|
}
|
|
); |