mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-25 09:42:10 +08:00
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
|
|
|
|
module.exports = function (ngApp, events) {
|
|
|
|
|
|
/**
|
|
* Page Editor Toolbox
|
|
* Controls all functionality for the sliding toolbox
|
|
* on the page edit view.
|
|
*/
|
|
ngApp.directive('toolbox', [function () {
|
|
return {
|
|
restrict: 'A',
|
|
link: function (scope, elem, attrs) {
|
|
|
|
// Get common elements
|
|
const $buttons = elem.find('[toolbox-tab-button]');
|
|
const $content = elem.find('[toolbox-tab-content]');
|
|
const $toggle = elem.find('[toolbox-toggle]');
|
|
|
|
// Handle toolbox toggle click
|
|
$toggle.click((e) => {
|
|
elem.toggleClass('open');
|
|
});
|
|
|
|
// 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();
|
|
if (openToolbox) elem.addClass('open');
|
|
}
|
|
|
|
// Set the first tab content active on load
|
|
setActive($content.first().attr('toolbox-tab-content'), false);
|
|
|
|
// Handle tab button click
|
|
$buttons.click(function (e) {
|
|
let name = $(this).attr('toolbox-tab-button');
|
|
setActive(name, true);
|
|
});
|
|
}
|
|
}
|
|
}]);
|
|
};
|