[BUGFIX] Prevent loading jsfunc.inline.js twice
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Resources / Private / TypeScript / Toolbar.ts
1 /*
2  * This file is part of the TYPO3 CMS project.
3  *
4  * It is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License, either version 2
6  * of the License, or any later version.
7  *
8  * For the full copyright and license information, please read the
9  * LICENSE.txt file that was distributed with this source code.
10  *
11  * The TYPO3 project - inspiring people to share!
12  */
13
14 import * as $ from 'jquery';
15 import ModuleMenu = require('./ModuleMenu');
16
17 /**
18  * Module: TYPO3/CMS/Backend/Toolbar
19  * Toolbar component of the TYPO3 backend
20  * @exports TYPO3/CMS/Backend/Toolbar
21  */
22 class Toolbar {
23   public static initialize(): void {
24     Toolbar.initializeEvents();
25   }
26
27   private static initializeEvents(): void {
28     $('.t3js-toolbar-item').parent().on('hidden.bs.dropdown', (): void => {
29       $('.scaffold')
30         .removeClass('scaffold-toolbar-expanded')
31         .removeClass('scaffold-search-expanded');
32     });
33     $(document).on('click', '.toolbar-item [data-modulename]', (evt: JQueryEventObject): void => {
34       evt.preventDefault();
35       const moduleName = $(evt.target).closest('[data-modulename]').data('modulename');
36       ModuleMenu.App.showModule(moduleName);
37     });
38     $(document).on('click', '.t3js-topbar-button-toolbar', (): void => {
39       $('.scaffold')
40         .removeClass('scaffold-modulemenu-expanded')
41         .removeClass('scaffold-search-expanded')
42         .toggleClass('scaffold-toolbar-expanded');
43     });
44     $(document).on('click', '.t3js-topbar-button-search', (): void => {
45       $('.scaffold')
46         .removeClass('scaffold-modulemenu-expanded')
47         .removeClass('scaffold-toolbar-expanded')
48         .toggleClass('scaffold-search-expanded');
49     });
50   }
51 }
52
53 $((): void => {
54   Toolbar.initialize();
55 });