71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
#include utility.js
|
|
|
|
var AmiOptionButtons = function(parent) {
|
|
var container = $e({ attrs: { id: 'bbCodeContainer' } }),
|
|
buttons = new Map;
|
|
parent.appendChild(container);
|
|
|
|
var createBtn = function(name, title, languageKey, style, onclick) {
|
|
var pub = {};
|
|
var elem = $e({
|
|
tag: 'input',
|
|
attrs: {
|
|
type: 'button',
|
|
name: typeof languageKey === 'string' ? languageKey : ';;',
|
|
value: title,
|
|
style: style,
|
|
onclick: function(ev) { performClick(ev); },
|
|
},
|
|
});
|
|
|
|
var hide = function() { elem.classList.add('hidden'); };
|
|
var show = function() { elem.classList.remove('hidden'); };
|
|
var performClick = function(ev) {
|
|
onclick.call(pub, pub, ev);
|
|
};
|
|
|
|
pub.getName = function() { return name; };
|
|
pub.getTitle = function() { return title; };
|
|
pub.getLanguageKey = function() { return languageKey; };
|
|
pub.getElement = function() { return elem; };
|
|
pub.performClick = performClick;
|
|
pub.hide = hide;
|
|
pub.show = show;
|
|
|
|
return pub;
|
|
};
|
|
|
|
var hide = function() { container.classList.add('hidden'); };
|
|
var show = function() { container.classList.remove('hidden'); };
|
|
|
|
return {
|
|
create: function(name, title, languageKey, style, onclick) {
|
|
if(buttons.has(name))
|
|
throw 'a button with this name already exists';
|
|
var btnInfo = createBtn(name, title, languageKey, style, onclick);
|
|
buttons.set(btnInfo.getName(), btnInfo);
|
|
container.appendChild(btnInfo.getElement());
|
|
return btnInfo;
|
|
},
|
|
has: function(name) {
|
|
return buttons.has(name);
|
|
},
|
|
get: function(name) {
|
|
return buttons.get(name);
|
|
},
|
|
remove: function(name) {
|
|
if(!buttons.has(name))
|
|
return;
|
|
var btnInfo = buttons.get(name);
|
|
container.removeChild(btnInfo.getElement());
|
|
buttons.delete(name);
|
|
},
|
|
clear: function() {
|
|
buttons.clear();
|
|
$rc(container);
|
|
},
|
|
hide: hide,
|
|
show: show,
|
|
};
|
|
};
|