2015-12-30 00:39:25 +08:00
|
|
|
|
2017-07-28 02:07:58 +08:00
|
|
|
|
2017-09-23 19:24:06 +08:00
|
|
|
module.exports = function (ngApp, events) {
|
2016-03-30 01:25:54 +08:00
|
|
|
|
2016-06-04 22:37:28 +08:00
|
|
|
|
2016-06-12 04:04:18 +08:00
|
|
|
/**
|
|
|
|
* Page Editor Toolbox
|
|
|
|
* Controls all functionality for the sliding toolbox
|
|
|
|
* on the page edit view.
|
|
|
|
*/
|
2016-06-04 22:37:28 +08:00
|
|
|
ngApp.directive('toolbox', [function () {
|
2016-05-15 03:02:00 +08:00
|
|
|
return {
|
|
|
|
restrict: 'A',
|
2016-06-04 22:37:28 +08:00
|
|
|
link: function (scope, elem, attrs) {
|
2016-05-15 03:02:00 +08:00
|
|
|
|
|
|
|
// Get common elements
|
2016-10-24 00:55:48 +08:00
|
|
|
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-06-04 22:37:28 +08:00
|
|
|
|
2016-05-15 03:02:00 +08:00
|
|
|
// Set an active tab/content by name
|
|
|
|
function setActive(tabName, openToolbox) {
|
|
|
|
$buttons.removeClass('active');
|
|
|
|
$content.hide();
|
2016-10-24 00:55:48 +08:00
|
|
|
$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
|
2016-10-24 00:55:48 +08:00
|
|
|
setActive($content.first().attr('toolbox-tab-content'), false);
|
2016-05-15 03:02:00 +08:00
|
|
|
|
|
|
|
// Handle tab button click
|
2016-06-04 22:37:28 +08:00
|
|
|
$buttons.click(function (e) {
|
2016-10-24 00:55:48 +08:00
|
|
|
let name = $(this).attr('toolbox-tab-button');
|
2016-05-15 03:02:00 +08:00
|
|
|
setActive(name, true);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}]);
|
2016-05-16 03:12:53 +08:00
|
|
|
};
|