[BUGFIX] Streamline backend module menu and viewport initialization
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Resources / Private / TypeScript / Viewport.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 ContentContainer = require('./Viewport/ContentContainer');
16 import ConsumerScope = require('./Event/ConsumerScope');
17 import Loader = require('./Viewport/Loader');
18 import NavigationContainer = require('./Viewport/NavigationContainer');
19 import Topbar = require('./Viewport/Topbar');
20
21 class Viewport {
22   // The attributes are uppercase for compatibility reasons
23   public readonly Loader: Loader = Loader;
24   public readonly Topbar: Topbar = Topbar;
25   public readonly NavigationContainer: NavigationContainer = null;
26   public readonly ContentContainer: ContentContainer = null;
27   public readonly consumerScope: any = ConsumerScope;
28
29   constructor() {
30     $((): void => this.initialize());
31     this.NavigationContainer = new NavigationContainer(this.consumerScope);
32     this.ContentContainer = new ContentContainer(this.consumerScope);
33   }
34
35   private initialize(): void {
36     this.doLayout();
37     $(window).on('resize', () => {
38       this.doLayout();
39     });
40   }
41
42   private doLayout(): void {
43     this.NavigationContainer.cleanup();
44     this.NavigationContainer.calculateScrollbar();
45     $('.t3js-topbar-header').css('padding-right', $('.t3js-scaffold-toolbar').outerWidth());
46   }
47 }
48
49 let viewportObject;
50
51 if (!top.TYPO3.Backend) {
52   viewportObject = new Viewport();
53   top.TYPO3.Backend = viewportObject;
54 } else {
55   viewportObject = top.TYPO3.Backend;
56 }
57
58 export = viewportObject;