BNPChrome.factory('toolbar', function() { return { buttons: [], createButton: function(icon, name, input, callback) { this.buttons.push({ icon: icon, name: name, input: input, callback: callback }); }, createToggleButton: function(icon, name, input, callback, selected) { this.buttons.push({ icon: icon, name: name, input: input, toggle: true, callback: callback, selected: selected }); }, render: function() { var $html = $('
'); $.each(this.buttons, function(i, button) { var $button = $(''); if (button.toggle === true) { $button.on('click', function() { if ($button.hasClass("selected")) { $button.removeClass("selected"); } else { $button.addClass("selected"); } }); if (button.selected === true) { $button.addClass("selected"); } } $button.on('click', button.callback); $html.append($button); if (button.input === true) { var $inputField = $(''); $html.append($inputField); } }); return $html; } }; });