[TASK] Migrate Toolbar to TypeScript
[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
16 /**
17  * Module: TYPO3/CMS/Backend/Toolbar
18  * Toolbar component of the TYPO3 backend
19  * @exports TYPO3/CMS/Backend/Toolbar
20  */
21 class Toolbar {
22   public static initialize(): void {
23     Toolbar.initializeEvents();
24   }
25
26   private static initializeEvents(): void {
27     $('.t3js-toolbar-item').parent().on('hidden.bs.dropdown', (): void => {
28       $('.scaffold')
29         .removeClass('scaffold-toolbar-expanded')
30         .removeClass('scaffold-search-expanded');
31     });
32     $(document).on('click', '.toolbar-item [data-modulename]', (evt: JQueryEventObject): void => {
33       evt.preventDefault();
34       require(['TYPO3/CMS/Backend/ModuleMenu'], (): void => {
35         const moduleName = $(evt.target).closest('[data-modulename]').data('modulename');
36         TYPO3.ModuleMenu.App.showModule(moduleName);
37       });
38     });
39     $(document).on('click', '.t3js-topbar-button-toolbar', (): void => {
40       $('.scaffold')
41         .removeClass('scaffold-modulemenu-expanded')
42         .removeClass('scaffold-search-expanded')
43         .toggleClass('scaffold-toolbar-expanded');
44     });
45     $(document).on('click', '.t3js-topbar-button-search', (): void => {
46       $('.scaffold')
47         .removeClass('scaffold-modulemenu-expanded')
48         .removeClass('scaffold-toolbar-expanded')
49         .toggleClass('scaffold-search-expanded');
50     });
51   }
52 }
53
54 $((): void => {
55   Toolbar.initialize();
56 });