BookStack/resources/assets/js/directives.js

47 lines
1.5 KiB
JavaScript
Raw Normal View History

2015-12-30 00:39:25 +08:00
module.exports = function (ngApp, events) {
/**
* Page Editor Toolbox
* Controls all functionality for the sliding toolbox
* on the page edit view.
*/
ngApp.directive('toolbox', [function () {
2016-05-15 03:02:00 +08:00
return {
restrict: 'A',
link: function (scope, elem, attrs) {
2016-05-15 03:02:00 +08:00
// Get common elements
const $buttons = elem.find('[toolbox-tab-button]');
const $content = elem.find('[toolbox-tab-content]');
2016-05-15 03:02:00 +08:00
const $toggle = elem.find('[toolbox-toggle]');
// Handle toolbox toggle click
$toggle.click((e) => {
elem.toggleClass('open');
});
2016-05-15 03:02:00 +08:00
// Set an active tab/content by name
function setActive(tabName, openToolbox) {
$buttons.removeClass('active');
$content.hide();
$buttons.filter(`[toolbox-tab-button="${tabName}"]`).addClass('active');
$content.filter(`[toolbox-tab-content="${tabName}"]`).show();
2016-05-15 03:02:00 +08:00
if (openToolbox) elem.addClass('open');
}
// Set the first tab content active on load
setActive($content.first().attr('toolbox-tab-content'), false);
2016-05-15 03:02:00 +08:00
// Handle tab button click
$buttons.click(function (e) {
let name = $(this).attr('toolbox-tab-button');
2016-05-15 03:02:00 +08:00
setActive(name, true);
});
}
}
}]);
};